Jenkins Still Works. But Ask Yourself Why You Are Still Using It.
by Eric Hanson, Backend Developer at Clean Systems Consulting
The Honest Case for Staying on Jenkins
Jenkins has been running production pipelines since 2011. It has a plugin ecosystem of over 1,800 plugins. It runs on-premises without sending your code to a third party. It can be configured to run on air-gapped networks. It integrates with almost everything. It has a massive community and extensive documentation for edge cases.
If you're in a regulated industry where your build environment cannot touch external cloud services, Jenkins is often the only serious option. If you have complex, highly customized build infrastructure that would take a year to migrate, the migration cost may exceed the operational savings for years. If your team has deep Jenkins expertise and your builds run reliably — Jenkins is working, and "working" has value that's easy to underestimate.
These are legitimate reasons to stay on Jenkins. The problem is that most teams aren't on Jenkins for these reasons. They're on Jenkins because it was set up in 2017 and nobody has prioritized migrating.
What Jenkins Actually Costs
The operational cost of Jenkins is real and often invisible because it's amortized across the team without being attributed to anyone in particular.
Infrastructure management. Jenkins requires a controller (formerly called master) node and agent nodes. These need to be provisioned, sized, kept available, patched, and scaled. Someone manages this — either explicitly (an ops engineer) or implicitly (a developer who got assigned it once and became the de facto Jenkins person). Cloud-native CI platforms (GitHub Actions, GitLab CI, CircleCI) handle this infrastructure entirely.
Plugin management. Jenkins plugins require explicit version management. Plugin A depends on Plugin B version 2.3+, but you're on 2.1 because Plugin C requires 2.1 exactly. Updating plugins is a risk event in Jenkins in a way that it simply isn't in platforms where the pipeline runtime is managed for you.
Slow configuration feedback. Declarative Jenkinsfile syntax errors are discovered at runtime — you push, the job starts, and it fails 30 seconds in with a parse error. Modern platforms validate workflow syntax before the job runs. This sounds minor; it costs 2–5 minutes per iteration during pipeline development.
Security maintenance burden. Jenkins and its plugins have a high CVE rate. Keeping a Jenkins instance secure requires regular updates, plugin audits, and active monitoring of the Jenkins security advisories. Each update carries regression risk.
What the Alternatives Actually Offer
GitHub Actions (if your code is on GitHub): zero infrastructure to manage, native integration with your repository, OIDC-based authentication to cloud providers without stored credentials, reusable workflows, and a marketplace of actions. Pricing is per-minute on hosted runners, with free minutes for public repositories and small private usage.
GitLab CI (if your code is on GitLab): similar zero-infrastructure model, excellent native Docker integration, built-in artifact management, and GitLab's native features (issue tracking, code review, environment tracking) integrated with the pipeline.
Buildkite: a hybrid model — Buildkite orchestrates the pipeline but your own agents run the jobs. This addresses the compliance and data-residency concerns that push teams toward Jenkins while eliminating the controller management overhead. Useful for teams that need on-premises execution but don't want to operate a Jenkins instance.
The Migration Question
If you're asking whether to migrate, the relevant questions are:
What is the operational cost of Jenkins today? Count the hours per month your team spends on Jenkins infrastructure, plugin updates, and Jenkins-specific debugging. Be honest about the burdened cost of that time.
What would you gain from migrating? Reduced infrastructure overhead, faster configuration feedback, better secret management (especially OIDC), and a platform that receives ongoing development rather than community-maintained plugins.
What would it cost to migrate? Translating Jenkinsfiles to the target platform's syntax, rewriting shared library code, and training the team on the new platform. For a 10-pipeline team, this is typically 2–4 weeks of focused effort.
Are there blockers? On-premises execution requirements, air-gap requirements, compliance requirements that mandate specific audit logging. These may make Jenkins non-negotiable.
The Practical Recommendation
If you're on Jenkins and it works — really works, with low operational overhead and a team that maintains it well — there's no urgent reason to migrate. The grass-is-greener problem is real in CI tooling.
If you're on Jenkins and it's a constant source of maintenance burden, unclear pipeline failures, and plugin conflict headaches — migrate. The migration cost is a one-time expense; the Jenkins overhead is an ongoing one. On any reasonable time horizon, the migration pays for itself.
The question isn't "is Jenkins good?" Jenkins is good. The question is: is Jenkins right for your team's current context, or is it inertia from a decision made years ago that nobody has revisited?