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?

Scale Your Backend - Need an Experienced Backend Developer?

We provide backend engineers who join your team as contractors to help build, improve, and scale your backend systems.

We focus on clean backend design, clear documentation, and systems that remain reliable as products grow. Our goal is to strengthen your team and deliver backend systems that are easy to operate and maintain.

We work from our own development environments and support teams across US, EU, and APAC timezones. Our workflow emphasizes documentation and asynchronous collaboration to keep development efficient and focused.

  • Production Backend Experience. Experience building and maintaining backend systems, APIs, and databases used in production.
  • Scalable Architecture. Design backend systems that stay reliable as your product and traffic grow.
  • Contractor Friendly. Flexible engagement for short projects, long-term support, or extra help during releases.
  • Focus on Backend Reliability. Improve API performance, database stability, and overall backend reliability.
  • Documentation-Driven Development. Development guided by clear documentation so teams stay aligned and work efficiently.
  • Domain-Driven Design. Design backend systems around real business processes and product needs.

Tell us about your project

Our offices

  • Copenhagen
    1 Carlsberg Gate
    1260, København, Denmark
  • Magelang
    12 Jalan Bligo
    56485, Magelang, Indonesia

More articles

You Don't Need a Complex Pipeline to Start. You Need a Working One.

Over-engineered pipelines built before teams understand their actual needs are a major source of CI/CD dysfunction. The path to a mature pipeline runs through a simple, working one — not around it.

Read more

What an Index Actually Does to Your Database

Indexes are the most important performance tool in relational databases, and they are also widely misunderstood — knowing how a B-tree index is structured, what operations it accelerates, and what it costs changes how you design schemas and tune queries.

Read more

Full-Time Engineer vs Backend Contractor — A Cost Breakdown for EU Startups

EU employment law makes full-time engineers significantly more expensive than the gross salary suggests — understanding the true cost of each model is the prerequisite to making this decision rationally.

Read more

Environment Variables in Docker Compose Without the Confusion

Docker Compose has multiple overlapping mechanisms for environment variables — .env files, environment blocks, env_file, shell variables — and they interact in ways that trip people up. Understanding the precedence order removes the guessing.

Read more