Does CircleCI cost less than self-hosted CI in your case?
For most teams the answer depends on build volume and on who maintains the system. Woodpecker CI is Apache-2.0 and Jenkins is MIT, so neither carries a license fee. The comparison therefore turns on build infrastructure, storage, upgrades and staff time on one side, against CircleCI's credits, plan fees and overage on the other. This section does not quote a CircleCI price, so start from your own contract and usage report. Self-hosting tends to cost less when build volume is high and steady, because fixed infrastructure is spread across many builds. It tends to cost more when the team is small and has no platform staff, because the time spent on upgrades, on-call and capacity work becomes the largest line.
Put each cost on one sheet with its owner and whether it is one-time or recurring. One-time costs include setting up the server, building agent images and converting pipelines. Recurring costs include compute for agents, the database, storage for artifacts and logs, and the people who run them. Woodpecker agents can run on Docker, Kubernetes or the local machine, and a Woodpecker server can use an optional autoscaler to create cloud VMs for pending builds. Jenkins recommends dedicated build agents so the controller stays lean. Compute and storage costs rise with peak concurrency, not average load, so ask for CircleCI's monthly credit consumption and peak parallelism, then size your agents against those figures.
Upgrades and support are the costs teams most often leave out. Jenkins picks a new LTS baseline every 12 weeks, and Jenkins LTS 2.580.1 stopped bundling several plugins, so administrators must install them through the plugin manager during the upgrade. Woodpecker 3.19.0 is a newer minor line that changed agent label enforcement, so plan a test instance for each release. Ask CircleCI for the current terms of your plan or CircleCI Server contract, including support levels, and compare them with the hours your team would spend on upgrades and incidents. If the hours are not available, DeployOpen can scope an implementation and an ongoing retainer in writing, and the quote follows from that scope.
Which cost components move on each side
This table sets each CircleCI cost component against the matching cost on a self-hosted Woodpecker CI or Jenkins setup, and marks whether it is one-time or recurring. Read it as a checklist for a quote: most of the commercial bill is usage-driven, while most of the self-hosted cost is people and compute you control. Confirm each figure against your own contract and environment before comparing totals.
| Cost component | Commercial side (CircleCI) | Self-hosted side (Woodpecker CI and Jenkins) | One-time or recurring |
|---|---|---|---|
| Plan fees and per-user charges | Plan subscription and seat charges set by your CircleCI agreement; confirm current terms with CircleCI | No license fee for either engine; Woodpecker is Apache-2.0 and Jenkins is MIT licensed | Recurring on the CircleCI side; none for the engines |
| Credits per build minute | Build time consumed as credits, scaled by resource class; ask CircleCI how your pipelines map to credit use | Replaced by your own build servers or Kubernetes capacity, priced by your cloud or hardware provider | Recurring on both sides |
| Network and storage overage | Overage billed when you exceed plan allowances; confirm the metered items in your order form | Egress and storage costs depend on where your registry, caches and artifacts sit | Recurring |
| CircleCI Server contract | Annual self-managed contract covering the Kubernetes footprint; obtain the scope and renewal terms in writing | Not applicable; you run Woodpecker or Jenkins on infrastructure you already fund | Recurring on the commercial side |
| Build servers and agents | Hosted compute included in credits, or self-hosted runners you operate under the commercial plan | Woodpecker agents on Docker or Kubernetes, or Jenkins agents; you size them and autoscale as needed | Recurring; sized by concurrent build demand |
| Storage and artifact retention | CircleCI keeps artifacts for 30 days by default and at most, so exports must be scheduled before migration | You set retention in your own object storage or file store, with no vendor expiry window | Recurring storage; export work is one-time |
| Upgrades and maintenance | Handled by CircleCI for the hosted service; Server upgrades follow CircleCI's release process | Woodpecker releases and Jenkins LTS upgrades, including plugin updates, fall to your team or support partner | Recurring |
| Support | Included in the commercial plan at the tier you buy; confirm response terms in writing | Community channels for both projects, or a paid support or implementation partner you contract separately | Recurring if you buy support |
| Staff time and migration effort | Limited internal effort; ongoing pipeline maintenance and orb updates | Pipeline conversion, secret re-creation and plugin setup are one-time; operating and upgrading the platform is recurring | One-time migration; recurring operations |
Why the license line is different for Woodpecker CI and Jenkins
Woodpecker CI is licensed under Apache-2.0 and Jenkins is distributed under the MIT License, so neither project charges a software license fee. CircleCI and CircleCI Server are commercial products, so their license or plan costs recur and are set by the vendor. For the cost comparison, the license line is the one place where the two open-source options are clearly cheaper, but it only removes one component. Your finance team should record that the software line for Woodpecker and Jenkins is zero and then move the budget to the components that still cost money: build servers, storage, upgrades, support and staff time.
Licensing risk deserves a place in the same comparison. Woodpecker exists because Drone 0.8 was forked in 2019 after Drone moved from Apache 2.0 to a proprietary license. Drone is now managed by Harness under the Polyform Small Business license. The lesson is not that Woodpecker will change in the same way, but that a permissive license is a property of the release you run, and the terms of a future release can differ. Ask legal to confirm the license of the exact Woodpecker and Jenkins versions you deploy, record the license files in your software bill of materials, and check whether any plugins you depend on carry different terms.
A free license does not mean free operation. Someone must install, patch, back up and monitor the platform, and that effort is paid for in staff time or a partner contract. A commercial support agreement for either project is a separate purchase, and it is optional. If you want one, request it in writing with the named products and versions, response commitments, included upgrade assistance, and what is excluded. Do not assume that a support contract is priced like a CircleCI plan, and do not count it in the cost model until a written quote exists.
What moves the CircleCI comparison the most
Four factors decide whether a move to self-hosted Woodpecker CI or Jenkins lowers total cost or only shifts it. Each one changes a different line of the comparison, so price the components separately rather than comparing a single CircleCI invoice against a server bill.
Build volume and concurrency
CircleCI charges for usage in credits and limits how many jobs run at once under your plan. Self-hosted Woodpecker CI and Jenkins run on build agents you size and pay for, so the cost depends on peak concurrency, average build length and how many agents you keep warm. Ask your team for a month of build-minute history per project, then model peak parallel jobs, not the monthly average. Agents can also scale to zero if you use the Woodpecker autoscaler or Jenkins cloud agents, which changes idle cost.
Data and artifact retention
CircleCI keeps build artifacts for 30 days at most, so any longer requirement becomes storage you own. Set retention per artifact type (test reports, binaries, container images, audit logs) and decide which ones must outlive the build. Object storage or a registry carries a recurring cost that grows with retention length and build frequency. Confirm with your compliance owner which records must be kept and for how long before sizing storage.
Edition and contract terms
The cost baseline differs by what you buy today. A CircleCI plan is billed through usage and seats, while CircleCI Server is a self-managed edition sold under a contract with unpublished pricing, so ask for the written quote and its renewal terms. Compare that against open-source licenses (Woodpecker CI is Apache-2.0, Jenkins is MIT) and the support subscription, if you buy one. The commercial line is usually the license or contract, not the software you run.
Availability requirements
How much downtime your pipelines can tolerate sets the infrastructure bill. Jenkins documents a primary and backup controller with a proxy such as HAProxy or F5 that routes traffic to the backup if the primary fails, and it recommends dedicated build agents so the controller stays lean. Woodpecker separates its server, agents and database, and SQLite is the default while PostgreSQL or MariaDB is recommended for larger instances. Decide which pipelines must survive a controller failure, then price the redundant nodes, database replication and failover testing that requires.
In-house platform skills
Staff time is often the largest recurring line in a self-hosted comparison. Jenkins requires your team to manage plugin updates, LTS upgrades and Java versions, and to back up $JENKINS_HOME, which holds configuration, plugins and secrets. Woodpecker requires container runtime, agent and database operations. Count the hours each month for upgrades, patching, on-call and pipeline migration, and decide whether that work stays in-house or moves to a retainer. Ask any implementation partner to price these tasks as written scope, with named deliverables and handover documentation.
How Woodpecker CI and Jenkins differ in running cost
Woodpecker CI has a small set of moving parts. A Woodpecker installation runs one server, which provides the UI and API, receives forge webhooks and parses pipeline YAML, plus one or more agents that run workflows and connect to the server over gRPC. Agents can run workflows on Docker, on Kubernetes or on the local machine, so your infrastructure cost follows the agent pool you choose. Woodpecker uses SQLite by default, and the project recommends PostgreSQL or MariaDB for larger instances, so a production setup usually adds a managed or self-run database to the bill.
- Server and database: One server plus a database that you back up and upgrade on your own schedule.
- Agent pool: Docker or Kubernetes agents sized for your concurrency, or an optional autoscaler that creates cloud VMs for pending builds.
- Kubernetes storage: The Kubernetes backend runs each step in a standalone pod and creates a temporary persistent volume claim for the pipeline, 10G and ReadWriteMany by default, to share files between steps. Your storage class and its cost decide what this claim costs.
- Plugin adaptation: Woodpecker plugins are container images configured through a settings block. The docs note that Drone plugins generally work but may need adjustments, so budget engineering time for plugins that CircleCI orbs replaced.
- Upgrades: Your team tracks Woodpecker releases, such as 3.19.0, and applies them to the server and agents.
Before you rely on these numbers, ask for a written estimate of the agent count at your peak concurrency and confirm the storage class your cluster would use for the shared pipeline volume.
Jenkins separates the controller from the build agents, and the scaling guide recommends dedicated build agents so the controller only handles HTTP requests and manages the build environment. That means your cost centers on two things: the controller, which holds all configuration, plugins and secrets in $JENKINS_HOME, and the agent fleet that does the actual builds. Growing the platform usually means adding controllers for new teams or projects rather than enlarging one instance, which multiplies the upkeep.
- Controller and backups: Everything to back up lives in
$JENKINS_HOMEon the controller, so backup and restore design is a first-week task, not an afterthought. - High availability: The scaling guide describes a primary and backup controller with a proxy such as HAProxy or F5 that routes traffic to the backup if the primary fails. Your team operates that proxy and the failover test.
- LTS cadence and plugins: Jenkins picks a new LTS baseline every 12 weeks and ships three LTS releases per baseline. LTS 2.580.1, released September 30, 2026, stopped bundling several plugins, including the SSH server and JUnit plugins, so administrators must install them through the plugin manager.
- Java support: The Java support policy lists Java 21 and Java 25 as supported, with 2.541.3 as the final LTS release for Java 17. Plan the JDK upgrade with the Jenkins upgrade.
- Configuration as Code: The Configuration as Code plugin reads YAML from
CASC_JENKINS_CONFIG, which makes controller setup reproducible. It does not install plugins, so pin plugins through Docker images or the Helm chart.
Ask any partner for a written estimate of the plugin upgrade effort per LTS cycle and the number of controllers your organization needs.
Both engines move cost from a metered vendor bill to people and infrastructure. The difference is where the hours land. Woodpecker concentrates work in a small server, a database and an agent pool, with plugin adaptation as the main one-time task. Jenkins spreads recurring work across the controller, the agent fleet, the plugin catalog and the LTS upgrade path, which is why its upkeep scales with the number of teams and controllers you run.
- One-time migration work: Woodpecker requires rewriting YAML and adapting plugins. Jenkins requires rewriting config.yml into Jenkinsfiles and mapping contexts to credentials.
- Recurring platform upkeep: Woodpecker upgrades touch fewer components. Jenkins upgrades touch the controller, plugins and Java together on every LTS cycle.
- Failover and backup: Jenkins HA with a proxy and backup controller adds a standing responsibility that Woodpecker's single server does not require by default.
- Kubernetes operations: Both engines can run on Kubernetes, but Woodpecker's per-pipeline volume and Jenkins pod agents each need someone who understands the cluster.
- Team size: Ask who owns each component by name. Unowned plugins, agents and backups are where costs quietly grow.
Before comparing, write down the team that will own the platform and how many hours per month they can give to it, then compare each engine against that budget.
How to build the cost model with your own numbers
This sequence turns your CircleCI invoices and your own cloud bills into a three-year comparison of CircleCI against self-hosted Woodpecker CI or Jenkins, so the decision rests on your usage rather than on any figure published here.
Export twelve months of CircleCI usage
Finance and the platform team pull the last 12 months of CircleCI invoices and usage reports, then list credits consumed, overage charges, per-user charges and any network or storage overage line by month. Confirm each line against the invoice, not the dashboard, because billing terms and credit rates are set in your contract. The output is one spreadsheet that shows what you paid per month and what drove each charge.
Map concurrency peaks and build minutes by project
Engineering leads export job history by project and record build minutes, job counts and the highest number of jobs running at the same time in each month. Concurrency peaks matter more than averages because the build fleet must handle the busiest hour, not the typical one. The output is a table of peak concurrent jobs and monthly build minutes for every repository that runs in CircleCI.
Price the build fleet for those peaks
The platform team sizes a Woodpecker CI agent pool or a Jenkins controller with build agents against the peak table, then prices the virtual machines or Kubernetes nodes from your own cloud or data center invoices. Include spare capacity for failed builds and retries, and record which costs are compute, which are licenses (none for the MIT-licensed or Apache-2.0 engines themselves) and which are plugin or add-on costs. The output is a monthly infrastructure figure with its source invoice line noted beside it.
Add storage for artifacts and build history
Because CircleCI keeps artifacts for 30 days, your self-hosted storage must cover the retention period your team chooses, plus logs and any test reports you export. Storage engineers price object storage or block storage from your own bills, using the growth rate from the 12-month export. The output is a monthly storage line and a retention policy written down for audit purposes.
Assign upgrade and on-call staff time
Engineering managers estimate the monthly hours your team will spend on engine and plugin upgrades, security patches, backups, restore tests and after-hours pipeline incidents, using actual hours from the last quarter of CI support tickets where possible. Jenkins upgrades and plugin changes and Woodpecker CI version updates both belong here. Ask finance to convert those hours at your internal loaded rate. The output is a recurring labor line tied to named roles.
Add one-time migration and parallel-run effort
Platform leads list the one-time work: converting config.yml pipelines, rebuilding environment variables that CircleCI will not display, moving artifacts and running both systems in parallel until the new pipelines match. Record hours or contractor fees per workstream from a written scope or internal estimate, not from a figure in this guide. The output is a single one-time cost total, kept separate from the recurring lines.
Compare three-year totals under two scenarios
Finance builds two three-year models: one where usage grows steadily at the rate seen in your 12-month export, and one where usage stays flat. Each model adds the recurring CircleCI charges, recurring self-hosted infrastructure and labor, and the one-time migration total, then shows the cumulative cost by year. Ask CircleCI for a written quote on the same usage to fill in its side of the comparison. The output is a cumulative cost chart that shows the break-even point under each scenario.
The one-time costs that appear during a move
Plan the one-time work before any build server is sized, because the largest move cost in this section is not infrastructure but re-creating secrets. CircleCI states that environment variable values are not readable in its app after they are set, so the values cannot be exported. Each secret has to be re-created from its source system, such as a cloud account, a registry or a signing key, and every one of them should then be rotated as part of the cutover. Ask your team to inventory every project and context that holds credentials, note which ones are used by deploy jobs, and decide who owns each value in the new Woodpecker or Jenkins credential store. The inventory is effort that recurs in no subscription line, so it belongs in the one-time budget and in the scope agreed with any implementation partner.
Build history is the second one-time item. CircleCI sets 30 days as both the default and the maximum artifact retention, according to its artifacts documentation, so anything you need for audit, release traceability or rollback must be downloaded before the window closes. Export test results, release bundles and signed images while the account is still active, and record where each file is stored in the new environment. Confirm with your compliance lead how long those records must be kept, since that retention period, not CircleCI's, will govern the new storage you provision.
Rotation is not optional housekeeping. CircleCI told all customers to rotate secrets after its January 4, 2023 incident, in which an attacker exfiltrated customer environment variables, tokens and keys along with the encryption keys needed to read them. Treat that precedent as a reason to put rotation in the budget for any hosted CI service you leave, and schedule it as a step in the cutover plan rather than a follow-up. Woodpecker can connect to the same GitHub, GitLab or Bitbucket repositories, so the repositories themselves do not need to move, which keeps this work focused on pipelines, credentials and history.
What buyers ask before they cost a move
How much effort does moving off CircleCI take, and what drives it?
Effort depends mostly on how many pipelines, orbs, contexts and artifact flows you have, not on the platform switch itself. Each pipeline must be rewritten: CircleCI config becomes Woodpecker YAML, a Jenkinsfile or a .gitlab-ci.yml, depending on the target. Orbs must be replaced with plugins, shared libraries or scripted steps, and environment variables must be re-created because CircleCI does not show their values after they are set. Artifacts and build history also need exporting before the 30-day retention window closes. Ask the vendor or a partner to inventory these items before estimating anything.
Can our own team migrate CI without outside help?
A team with container, Git and CI experience can often move simple pipelines in-house, especially when only a few projects are involved. Teams with many orbs, complex contexts, deployment secrets tied to production, or strict audit needs usually benefit from a written plan and an outside reviewer. DeployOpen plans, implements, integrates and documents self-hosted platforms in your own environment under a fixed-scope agreement, and ongoing support is available as a retainer. Your team should weigh its available engineering time against the scope before deciding.
How long does a CircleCI migration take?
The duration depends on the number of pipelines, the complexity of their workflows, how many secrets must be re-entered, and whether builds run in parallel with CircleCI during cutover. No duration is fixed by the platforms themselves, so treat any single figure with caution. Ask for a written scope that lists pipeline count, repositories, integrations, deployment targets and the parallel-run period before agreeing a timeline. A fixed-scope agreement sets deliverables and timing in writing before work starts.
What skills does a self-hosted Woodpecker CI or Jenkins setup require?
Your team needs to operate the runtime the builds use, plus the CI engine itself. For Woodpecker, this means the server and agents, usually run on Docker, Kubernetes or local machines, plus database choice (SQLite by default, with PostgreSQL or MariaDB recommended for larger instances) and YAML pipeline authoring. For Jenkins, expect controller and agent operations, Jenkinsfile authoring, and plugin management, including Configuration as Code for repeatable setup. Container image maintenance is needed for both. Confirm the skill mix you have before choosing the target.
What recurring work stays with us after go-live?
Recurring work includes upgrades, backups, agent capacity, certificate and secret rotation, and monitoring of build infrastructure. Jenkins publishes a new LTS baseline every 12 weeks, and its plugins need regular updates, with some bundled plugins removed from the default install in recent LTS releases. Jenkins keeps all configuration, plugins and secrets in $JENKINS_HOME on the controller, so backups must cover it. Woodpecker follows its own release cadence, with recent releases such as 3.19.0 fixing matrix variable injection. Ask any provider for a written support and upgrade plan that names these tasks.
Does the CircleCI Server path cost less than self-hosting Woodpecker or Jenkins?
CircleCI Server's price is not published, so it cannot be compared line by line until you receive a quote from CircleCI. Ask for the license scope, the Kubernetes and supporting services it requires (such as MongoDB, PostgreSQL, Redis, RabbitMQ and Vault), support terms, and renewal conditions. Then compare that quote with your own infrastructure, storage, staff time and upgrade costs for Woodpecker or Jenkins. Open-source engines remove license fees but not operating costs, so the answer depends on your scale and team.
Which costs stop and which keep recurring when we leave CircleCI?
Hosted credits and plan fees stop when the old pipelines are retired, but only after the parallel-run period ends. One-time costs include migration work, secret re-entry, artifact export and training. Recurring costs include compute for build agents, storage for artifacts and caches, network traffic, operations staff time and support contracts. Build server and storage costs rise with build frequency and parallelism, so model them against your recent CircleCI usage report. Ask for a quote that separates one-time work from annual running costs.
What to ask for in a written quote
A fixed-scope quote for moving off CircleCI should state its scope in units you can count and compare. Ask every bidder, whether a DeployOpen engagement, another partner or your own team's estimate, for the pipeline inventory: how many CircleCI projects, workflows and jobs are in scope, which ones use orbs, contexts and custom images, and which are retired rather than migrated. Next, ask for the environments covered (development, staging, production and any air-gapped network), the number of build agents or Woodpecker agents and Jenkins build agents planned per environment, and the autoscaling approach if any. Each of these is a line item that changes the total, so a quote that lists only a total price cannot be checked.
The storage, retention and secret items are where migrations most often go wrong. Ask for the artifact and log retention target in writing, since CircleCI keeps artifacts for 30 days, and confirm who exports existing build history before the window closes. Ask who re-creates each environment variable and context value in the new system, because CircleCI does not display stored values, and whether the quote includes rotating every credential that a connected project used. Also request a parallel-run period with a stated exit test, the upgrade and backup runbooks for the new platform (for Jenkins, the contents of $JENKINS_HOME and the controller backup routine), and the training and handover sessions with named deliverables. Compare the bids line by line on these items, and treat any item left out as a cost you will still carry.
How DeployOpen scopes a fixed-price CI migration
DeployOpen plans, implements, integrates, hardens, backs up, documents and supports self-hosted open-source platforms inside your own infrastructure. For CircleCI cost vs self-hosted Woodpecker CI and Jenkins, we start from a written scope that compares your current CircleCI spend with the servers, storage and staff time your own CI would need.
How we scope
- Inventory every CircleCI project, pipeline, context, orb and self-hosted runner that the new platform must replace.
- Record which forges, repositories and deployment targets Woodpecker CI or Jenkins must reach from your network.
- Agree the written scope, deliverables and timeline with you before any build work starts, so the quote follows from it.
How we build
- Stand up the chosen engine, its agents or Kubernetes backend, and its database in your cloud account or data center.
- Convert representative pipelines to Woodpecker YAML or Jenkinsfiles and test them against your existing branch and tag events.
- Harden the installation, configure secret storage and backups, and run security testing against the CI environment.
How we hand over
- Document the architecture, pipeline conventions, plugin list, upgrade steps and backup and restore procedure for your team.
- Export build history and artifacts that must be kept before the CircleCI retention window closes, and record the rotation plan for secrets.
- Run a parallel period with you, then confirm cutover criteria in writing so your team knows when CircleCI can be switched off.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after the fixed-scope work closes.
- Plan upgrades around the release lines of your chosen engine, such as Jenkins LTS baselines or Woodpecker minor releases.
- Ask us for a quote built from your written scope, and confirm vendor timelines and licensing terms directly with each project.

