Skip to content

10 December 2025

CI/CD runners on GitLab CE: a small win worth celebrating

I stood up my own GitLab CE runners and automated deployments without leaning on an off the shelf service.

December brought a quiet but meaningful win. I finally stood up CI/CD runners in GitLab CE (yeah, Gitea didn't scratch my itch!) and integrated them into my deployment flow. Releases now move through a predictable pipeline instead of being kicked off by a script I have to remember to run by hand.

I deliberately avoided an off-the-shelf hosted service. I wanted to understand the moving parts, own the configuration end to end, and build something that fits my platform rather than bending the platform to fit a tool. It took longer, but the result feels solid.

Pipelines run cleanly. Deployments are consistent. Failures surface early and clearly. When a build breaks, tests fail and I know about it immediately. When something unexpected happens further down the line, getting back to a known good state is fast and repeatable.

The day-to-day interaction is almost trivial now:

'git commit -m "commit note" && git push origin main'

Behind that simplicity sits a set of guardrails that remove manual steps without removing intent or control. Automation replaces repetition, not judgement, and that’s where the confidence comes from.

On paper, this is a small change. In practice, it’s a shift in how the platform behaves: less manual work, less reliance on ad-hoc scripting, and a clearer, calmer path from commit to release. Small wins like this compound, and this one felt worth celebrating.

Comments load on request because GitHub may set cookies. See the privacy policy.