CircleCI cost vs self-hosted Woodpecker CI and Jenkins

CircleCI charges through plans, credits and overage, or a CircleCI Server contract. Self-hosted Woodpecker CI or Jenkins replaces those charges with infrastructure, upgrades and staff time, and the balance depends on your own numbers.

On this page

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 componentCommercial side (CircleCI)Self-hosted side (Woodpecker CI and Jenkins)One-time or recurring
Plan fees and per-user chargesPlan subscription and seat charges set by your CircleCI agreement; confirm current terms with CircleCINo license fee for either engine; Woodpecker is Apache-2.0 and Jenkins is MIT licensedRecurring on the CircleCI side; none for the engines
Credits per build minuteBuild time consumed as credits, scaled by resource class; ask CircleCI how your pipelines map to credit useReplaced by your own build servers or Kubernetes capacity, priced by your cloud or hardware providerRecurring on both sides
Network and storage overageOverage billed when you exceed plan allowances; confirm the metered items in your order formEgress and storage costs depend on where your registry, caches and artifacts sitRecurring
CircleCI Server contractAnnual self-managed contract covering the Kubernetes footprint; obtain the scope and renewal terms in writingNot applicable; you run Woodpecker or Jenkins on infrastructure you already fundRecurring on the commercial side
Build servers and agentsHosted compute included in credits, or self-hosted runners you operate under the commercial planWoodpecker agents on Docker or Kubernetes, or Jenkins agents; you size them and autoscale as neededRecurring; sized by concurrent build demand
Storage and artifact retentionCircleCI keeps artifacts for 30 days by default and at most, so exports must be scheduled before migrationYou set retention in your own object storage or file store, with no vendor expiry windowRecurring storage; export work is one-time
Upgrades and maintenanceHandled by CircleCI for the hosted service; Server upgrades follow CircleCI's release processWoodpecker releases and Jenkins LTS upgrades, including plugin updates, fall to your team or support partnerRecurring
SupportIncluded in the commercial plan at the tier you buy; confirm response terms in writingCommunity channels for both projects, or a paid support or implementation partner you contract separatelyRecurring if you buy support
Staff time and migration effortLimited internal effort; ongoing pipeline maintenance and orb updatesPipeline conversion, secret re-creation and plugin setup are one-time; operating and upgrading the platform is recurringOne-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.

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

Costs teams forget on each side

Hosted CI bills look simple until overage, retries and a self-managed server footprint arrive. Self-hosted engines remove the metered bill but move upgrades, backups, images and plugin work onto your team, so both sides need a line-item comparison before a renewal date.

Network and storage overage

Hosted CircleCI usage is billed in credits, and network and storage consumption can add charges on top of build minutes. Ask for the overage terms in writing and pull the last three months of usage before comparing totals. On the self-hosted side, the same workload lands on your object storage and egress, so ask your cloud or data center team what those costs look like for your artifact volume.

Credit burn from retries

Retried and parallel jobs consume credits even when the retry was caused by a flaky test rather than a code change. Parallel test splitting and matrix-style fan-out multiply the same effect. Measure credits per successful merge, not per pipeline, and list which jobs retry most often before you size a replacement.

CircleCI Server footprint

If you choose CircleCI Server instead, the install brings its own platform. Plan for Kubernetes, MongoDB, PostgreSQL, RabbitMQ, Redis and Vault, and ask CircleCI for the current supported versions and sizing guidance. That footprint is an operating commitment your team keeps running, separate from any license fee.

Jenkins plugin and LTS upgrades

Jenkins upgrades are recurring team work. LTS baselines arrive on a fixed cycle, and plugin compatibility must be tested against each one. Recent LTS releases stopped bundling several plugins, including the SSH server and JUnit plugins, so administrators must install them through the plugin manager. Budget a regular test window and a named owner for the plugin list.

Java and $JENKINS_HOME backups

Jenkins runs on Java, and each Java version has its own support end date, so the JDK upgrade needs a plan alongside the Jenkins upgrade. All configuration, plugins and secrets live in $JENKINS_HOME on the controller, so that directory is the backup target. Confirm restore time with a test restore into a separate environment, because a backup you have never restored is an unverified control.

Runner pricing and agent upkeep

Some vendors meter self-hosted runners. Atlassian charges per concurrent build slot for premium Bitbucket Pipelines runners, and GitHub announced a per-minute charge for self-hosted Actions runners before postponing it. Check runner terms before assuming your own build machines are free. Either way, you patch agent operating systems, build images and container runtimes on a recurring schedule.

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.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.