Skip to content

Just call me Sony Walkman, 'cause I'm a CD player

insert excited squeals

BLUF: I got my very own CD pipeline going with GitLab! Hot dog! Not bad for a sweatpants Saturday.

Background: CI/CD stands for "Continuous Integration/Continuous Delivery", and it's a widely-used practice in software development which enables teams to automate different stages of the release lifecycle (for example, building, testing, validation, and deployment to different environments). Automation is fantastic because it ensures that a baseline of steps are applied the same way each time, thus eliminating both the time it would take to do everything manually, as well as the potential for slip-ups or deviation from standard. In other words, it helps teams deploy their code quickly, cleanly, and reliably.

Details: For my site specifically, my "before" update workflow looked like this:

  1. Make updates (e.g., write a blog post) in Cursor.
  2. Save the changes.
  3. Commit and push the changes to GitLab, where my source code is tracked.
  4. Build the MkDocs site manually.
  5. Copy the /site folder to another directory which pushes to my GitHub Pages repo.
  6. Commit and push the /site file changes to GitHub, which actually displays the changes.

Friends, no one has time for all this, and the chances were extremely high that I would simply forget to actually push the changes to GitHub at all. (One of the things I really like about MkDocs is that you can preview your changes as you're making them, but this also lends me to believe that those changes are actually live when they're not!) Now, my workflow looks like this:

  1. Make updates (e.g., write a blog post) in Cursor.
  2. Save the changes.
  3. Commit and push the changes to GitLab, where my source code is tracked.

That's it! GitLab automatically pushes the changes to GitHub Pages for me.

Now, a caveat at this point is that whenever I commit changes to source (i.e., GitLab), they will go live immediately on GitHub. I don't necessarily want that in the long term (I'll likely look at implementing releases soon, to be able to better batch updates), but for right now, it's nice to have the deployment streamlined a bit. It's just nice to be back in the CLI saddle again.