CircleCI Server vs self-hosted open-source CI

Teams that must keep builds, secrets and artifacts inside their own network can run Woodpecker CI, Jenkins or GitLab CI/CD on their own infrastructure. This page compares the options with CircleCI Server's footprint and sets out what a move involves.

On this page

Why CircleCI Server vs self-hosted open-source CI matters for in-network builds

If your team must keep CI inside its own network, including build secrets and artifacts, the core question is whether CircleCI Server, which installs into your own Kubernetes cluster, fits your operating model better than an open-source engine you run yourself. The open-source alternatives to compare are Woodpecker CI, Jenkins and GitLab CI/CD, each of which can run builds on infrastructure you control. Confirm CircleCI Server's current pricing directly with CircleCI, because its price is not published, so a like-for-like comparison has to start from a written quote.

The choice turns on operating footprint and data location, not only on features. CircleCI Server 4.10 runs on a stack that includes Kubernetes, Nomad, MongoDB, PostgreSQL, RabbitMQ, Redis and Vault, and your team would own the upgrades, backups and capacity planning for that stack. Woodpecker CI needs a server, agents and a database that defaults to SQLite and is usually moved to PostgreSQL or MariaDB for larger instances. Jenkins keeps its configuration, plugins and secrets in $JENKINS_HOME on the controller, and GitLab CI/CD asks you to plan around its reference architectures. Map each option to the hosts, databases, storage and staff it would add to your environment before comparing feature lists.

Data location matters because hosted CI has already shown the risk of holding deployment secrets. In its January 4, 2023 incident report, CircleCI told customers to rotate secrets after an attacker exfiltrated environment variables, tokens and the encryption keys needed to read them. Whichever engine you choose, confirm where secrets are stored, who can read them, how encryption keys are managed and how artifacts are retained and exported, and ask your vendor or your own platform team to document each answer. Ask whether your auditors will need evidence for these controls, and plan that evidence collection from the start.

What an in-network CI constraint requires

Keeping CI inside your own network moves four things onto your team: the secrets your pipelines hold, the artifacts and logs your builds produce, the services that must run inside your boundary, and the upgrade and backup routine that keeps all of it recoverable. Each card below names one of these decisions and the check to make before you commit to a platform.

Where pipeline secrets live

Deployment credentials are the most sensitive data a CI system holds. CircleCI disclosed on January 4, 2023 that an attacker exfiltrated customer environment variables, tokens and keys, along with the encryption keys needed to read them, and told all customers to rotate secrets. Ask where each secret is encrypted, who holds the key, and whether your own key management can sit under the CI platform. Plan for re-creating secrets on the new system, because CircleCI does not display environment variable values after they are set.

Where build artifacts are kept

Artifacts and build history must stay inside your boundary under your own retention rules. CircleCI sets 30 days as both the default and the maximum artifact retention, so anything you need longer has to be exported or stored elsewhere. On a self-hosted engine, you choose the object store and retention period, and you must confirm that the store is itself inside the network and covered by your backup policy.

Which services run inside the network

A CircleCI Server install brings its own footprint: Kubernetes, Nomad, MongoDB, PostgreSQL, RabbitMQ, Redis and Vault. Each of these is a service your team must host, patch and monitor. Open-source options are smaller in count but differ in shape. Woodpecker CI defaults to SQLite and recommends PostgreSQL or MariaDB for larger instances, and Jenkins keeps its state in the controller's home directory. Confirm which database, queue and secrets services each option needs and whether your platform team already runs them.

How upgrades and backups are run

Self-hosting makes upgrades and backups your responsibility. Jenkins keeps configuration, plugins and secrets in $JENKINS_HOME on the controller, so that directory is the core of any backup plan. GitLab requires upgrades to pass through published upgrade stops, which sets the order and pace of changes. Before choosing a platform, ask the vendor or project for its supported upgrade path, its backup and restore procedure, and how long you can run a version that is out of support.

What CircleCI Server asks your platform team to run

Before comparing prices, a platform team should understand what CircleCI Server 4.10 expects to run. The edition installs into the customer's own Kubernetes cluster, according to the CircleCI Server 4.10 overview, and the topic's supporting services are MongoDB, PostgreSQL, RabbitMQ, Redis and Vault, with Nomad machines for build execution and S3-compatible storage for artifacts and other data. Each of these is a stateful component your team would patch, back up, monitor, scale and recover, alongside the cluster itself. Confirm with CircleCI which versions of each service it supports, how it expects them to be deployed (managed or self-run), and which of them must be highly available for your expected build volume.

CircleCI does not publish a price for CircleCI Server, so the cost comparison starts with a written quote. Ask the vendor to itemize what is licensed, what is included in support, whether Nomad machine capacity and storage are billed separately, and what changes at renewal. On the other side, a self-hosted Woodpecker CI, Jenkins or GitLab CI/CD deployment has no license fee for the open-source engine, but it still carries recurring costs: infrastructure, storage, upgrades, security patching and the engineering time to operate them. Ask your internal team to estimate those hours and staffing in the same spreadsheet, so both options are compared on the same operating assumptions.

The operating burden is the decision point. Count who will carry the on-call rotation for the stateful services, who tests upgrades against each component version, and where the Vault secrets, database backups and artifact storage will be recovered from if a region or cluster fails. A useful check is to write down the recovery steps for one failed component, such as the message broker or the primary database, and ask both the vendor and your own team to walk through them. If your team cannot staff that work at the required level, the self-managed CircleCI edition and a self-hosted open-source engine both shift risk onto you, and the quote should reflect that difference.

Which open-source CI option fits an in-network deployment

Woodpecker CI is the lightest of the three to run beside an existing forge. It is licensed under Apache-2.0, and its documentation is published under CC BY-SA 4.0. A Woodpecker installation has a server that provides the UI and API, receives forge webhooks and parses pipeline YAML, and agents that run workflows and connect to the server over gRPC. Agents can run workflows on Docker, Kubernetes or the local machine, and an optional autoscaler can create cloud VMs for pending builds.

  • Database defaults: Woodpecker uses SQLite by default, with PostgreSQL or MariaDB recommended for larger instances.
  • Kubernetes: The Kubernetes backend runs each step in a standalone pod and creates a temporary persistent volume claim for the pipeline to share files between steps. Confirm the storage class and access mode your cluster supports.
  • Forges: It connects to GitHub, Gitea, Forgejo, GitLab, Bitbucket and Bitbucket Datacenter. Connecting multiple forges to one server is still experimental.
  • Offline use: Confirm with the project which container images, plugins and dependencies must be mirrored into your registry before a no-internet build.
  • Main trade-off: You assemble the pipeline from container steps and plugins, and plugins may need adjustment when they come from the Drone ecosystem.

Before committing, check which forge you will keep, how your secrets will reach agents, and whether your team can own the plugin images.

How each option handles secrets, artifacts and air-gapped builds

This table compares where Woodpecker CI, Jenkins and GitLab CI/CD keep secrets, how long artifacts live, how offline installs work, how each runs on Kubernetes and how often upgrades arrive. Read each row as a list of duties your team takes on, then confirm the specifics against the version you plan to run.

AreaWoodpecker CIJenkinsGitLab CI/CD (self-managed)
Secret storage locationSecrets are held by the Woodpecker server database that you operate, so backup and encryption of that database become your responsibility. Confirm the current secret handling options in the version you run.Credentials live in the controller's $JENKINS_HOME, which the scaling guide says also holds configuration, plugins and secrets to back up. Protect that directory and its backups as you would any secrets store.CI variables are stored in the GitLab instance database that you host, alongside source code. Confirm the encryption and masking options in your GitLab version and whether an external secrets manager fits your design.
Artifact retentionRetention is set by your own server and storage configuration, not by a vendor default. Decide retention per project and confirm the setting for your release.Artifacts stay on the controller or on storage you attach, so the retention policy is one you define and maintain. Plan cleanup jobs for the controller disk.Artifact expiry is configured on the instance and per job, and artifacts sit in storage you manage. Confirm the default expiry and how it applies to your instance.
Offline (air-gapped) installationServer, agents and plugin images must be mirrored into your registry, since builds pull container images at run time. Confirm each image and plugin source before the network is cut off.Plugins and update packages must be staged internally before installation, because the plugin manager normally reaches the internet. Confirm the offline update workflow for your version.GitLab documents running self-managed instances in offline, air-gapped environments, with separate guidance for security scanners. Confirm the offline steps for the install method you choose.
Kubernetes behaviorThe Kubernetes backend runs each step in its own pod and creates a temporary persistent volume claim for the pipeline, 10G and ReadWriteMany by default. Check that your storage class supports ReadWriteMany.Kubernetes pod agents are supported through the Kubernetes plugin, and Jenkins can be installed on Kubernetes. Stateful pieces such as the controller still need persistent storage you manage.The GitLab reference architectures say running stateful components such as PostgreSQL and Redis inside Kubernetes is not supported. The Cloud Native Hybrid architecture keeps those on VMs or managed services.
Upgrade cadenceWoodpecker releases are versioned, for example 3.18.0 on August 24, 2026 and 3.19.0 on October 7, 2026. Your team schedules and tests each upgrade.A new LTS baseline is picked every 12 weeks, followed by three LTS releases in four-week cycles with backported fixes only. Review each LTS changelog for removed bundled plugins before upgrading.GitLab ships a major release yearly, a minor release each month and patches twice a month. Bug fixes are backported only to the current stable release, while security fixes also go to the previous two monthly releases, and upgrades must pass through required upgrade stops.

How to deploy a self-hosted CI engine under the constraint

This sequence takes a team from confirming its forge and network limits to a tested, backed-up CI engine that runs inside its own network, with the old platform kept as a fallback until cutover.

  1. Confirm forge and network requirements

    Document which forge hosts the repositories, whether the build network must be isolated, which registries and package sources builds need, and how webhooks will reach the CI server. Woodpecker CI connects to GitHub, GitLab, Gitea, Forgejo, Bitbucket and Bitbucket Datacenter, and its forge documentation notes that connecting multiple forges to one server is still experimental. Confirm your forge's webhook and API access with the forge administrator. The output is a signed-off requirements sheet that names the forge, the network paths and the owner of each.

  2. Choose the CI engine against the requirements

    Compare Woodpecker CI, Jenkins and GitLab CI/CD against the requirements sheet, the pipeline inventory and the team's skills. Woodpecker uses container steps and YAML, Jenkins uses Jenkinsfiles and a controller with agents, and GitLab CI/CD is tied to a GitLab instance where source hosting and CI share one platform. Check the license and support model for each candidate with its vendor. The output is a short decision record that states the engine, its license and the reason it fits.

  3. Install the server and database

    The platform team installs the CI server inside the organization's own infrastructure and connects it to a database. Woodpecker uses SQLite by default, and its administration documentation recommends PostgreSQL or MariaDB for larger instances. For GitLab, the reference architecture documentation says stateful components such as PostgreSQL and Redis are not supported inside Kubernetes, so run them on virtual machines or managed services. The output is a reachable server with a tested login, a working database backup and a documented install version.

  4. Deploy build agents on Docker or Kubernetes

    Install agents on Docker, Kubernetes or dedicated machines and register them with the server. Woodpecker agents can run workflows on Docker, Kubernetes or the local machine, and its Kubernetes backend runs each step in a standalone pod with a temporary persistent volume claim for the pipeline. For Jenkins, keep the controller free of build work and add dedicated agents. The output is a test pipeline that runs on an agent, with the agent labels and resource limits written down.

  5. Configure secrets, credentials and access

    Recreate deployment secrets in the new engine's secret store or credential system, scoped to the projects and branches that need them. Hosted vendors do not let you export secret values, so the source of each value must come from its owner, such as a vault or the deployment target. Limit secrets to trusted events and protected branches, and confirm that pull request builds from forks cannot read production credentials. The output is a secrets inventory showing each secret, its owner and the pipelines allowed to use it.

  6. Set artifact storage and retention

    Choose where build artifacts and logs live, how long they are kept and who can read them. Hosted CI services keep artifacts for limited periods, such as 30 days for CircleCI by default and maximum, so the new retention policy must be set on purpose. Confirm the storage backend, backup schedule and access controls with your security team. The output is a written retention policy and a test artifact that can be retrieved by the intended users.

  7. Run a parallel pipeline and compare results

    Run the migrated pipelines beside the existing CircleCI pipelines on the same commits and compare build status, test results, artifacts and deployment steps. Keep deployments to a non-production target during this phase. Record each difference, such as plugin behavior or container image differences, and fix it before cutover. The output is a parallel-run report that the release owner signs off on, listing every pipeline that passed and every open difference.

  8. Cut over and back up configuration, plugins and secrets

    Switch webhooks and deployment triggers to the new engine, keep the old platform read-only for a fallback window, and rotate the secrets that existed on the old platform. Back up the configuration, plugin list and secret store on a schedule. For Jenkins, all configuration, plugins and secrets to back up live in the JENKINS_HOME directory on the controller. Test one restore into a separate environment before closing the project. The output is a restore test record and a completed rotation log.

What a move from CircleCI does to secrets and build history

Plan for secrets to be re-created, not copied. CircleCI states that environment variable values are not readable in its app after they are set, so the values a pipeline depends on, such as deploy keys, registry tokens and cloud credentials, have to be retrieved from their issuing systems or from your own password manager and entered again in the new CI engine. The January 4, 2023 incident report is the reason to treat this as a rotation exercise rather than a copy exercise: CircleCI told all customers to rotate secrets after an attacker exfiltrated environment variables, tokens and keys along with the encryption keys needed to read them. Inventory every context and project variable, record which system issues each credential, and rotate them during the cutover window so that the old and new platforms never hold valid copies of the same production secret at once. Confirm with your security team which credentials were already rotated after the 2023 notice, because those still need re-creation but may not need a second rotation.

Build history is the second item that does not move automatically. CircleCI sets 30 days as both the default and the maximum retention for build artifacts, so anything your team needs from older runs, such as test reports, coverage files, signed release bundles or compliance evidence, has to be downloaded through the API before that window closes. Make this an explicit step in the migration plan with an owner and a deadline, and decide which artifacts become the system of record in the new platform, for example a container registry or an object store you run. Check the CircleCI documentation on storing build artifacts for the current retention behavior on your plan, because the window is the constraint that drives the schedule. Export the pipeline run logs and test results you must keep for audits as well, and store them in a location with the same access controls as the source code.

Run the old and new pipelines in parallel for the period needed to confirm that every deployment secret resolves in the new engine, and do not decommission CircleCI contexts until the artifact export is verified. Record each rotation and each exported artifact in a change log, since auditors and incident responders will ask when a credential changed and where its build evidence lives. If your organization treats CI secrets as covered by a password or secrets management standard, bring the new CI platform's secret store into that process from the start rather than after cutover.

Evidence an auditor or regulator will ask for

Whichever CI platform you choose, an assessor will ask how builds run, who can change them and what happens to secrets and artifacts. The cards below list the records to assemble before the CircleCI Server or self-hosted open-source decision is final. DeployOpen prepares this evidence and the controls behind it, but does not issue audit reports, attestations or certifications; independent auditors and certification bodies do.

Architecture and data-flow diagrams

Show where source code, pipeline definitions, build logs, artifacts and secrets are stored and which systems each one crosses. For CircleCI Server, include the Kubernetes cluster, the data stores it depends on and any Nomad machines. For Woodpecker CI, Jenkins or GitLab CI/CD, include the server, agents or runners, the forge webhook path and the database. Confirm which components touch customer data and which stay inside your network.

Access control records for the CI server

Document who holds administrator rights on the CI controller or server, who can change pipeline definitions, who can approve deployments and how single sign-on and forge permissions map to CI roles. Export the membership lists and the approval history for a sample period. Ask whether the chosen platform can enforce authentication through your identity provider and whether admin actions are logged.

Secret inventory and rotation records

List every deployment credential, token and key the CI system holds, the projects that use it and the owner responsible for rotation. CircleCI told customers in January 2023 to rotate secrets after an intrusion exposed environment variables, tokens and keys. Record the rotation performed during any move, since CI secret values generally cannot be exported from the old platform and must be re-entered.

Backup and restore test results

Keep proof that the CI server configuration, plugins, pipeline state and database can be restored, not only that backups run. For Jenkins, the configuration, plugins and secrets live in the controller home directory, so include that path in the backup scope. For GitLab, retain the backup and restore test records. Record the date of each restore test, the person who ran it and the time taken to bring builds back online.

Upgrade and patch logs

Maintain a dated log of every CI platform, plugin and agent upgrade, with the version applied, the change notes reviewed and the test run afterward. Jenkins LTS 2.580.1 stopped bundling several plugins, so the log should show which plugins were installed separately. For GitLab, the log should show the required upgrade stops passed. Assessors look for a repeatable patch process more than a single update.

Retained build logs and artifacts

Decide how long build logs, test reports and artifacts must be kept for your audit trail, then confirm that the chosen platform keeps them that long. CircleCI sets 30 days as both the default and maximum artifact retention, so records needed beyond that window must be exported before a migration. Store exports in an access-controlled location with the same retention and deletion rules as your other audit evidence.

Questions buyers ask before choosing an in-network CI replacement

What drives the cost of replacing CircleCI Server with self-hosted CI?

The cost is driven by components you pay for, not by one license line. Self-hosted Woodpecker CI and Jenkins carry no license fee for the engine itself, so the main costs are build infrastructure (controller or server, agents or Kubernetes capacity, storage), the platform services underneath (database, object storage, backups), the staff time to operate and upgrade it, and any support you buy. CircleCI Server adds its own footprint of Kubernetes, Nomad, MongoDB, PostgreSQL, RabbitMQ, Redis and Vault, and its contract price is not published, so ask CircleCI for the full written terms. Costs that recur include infrastructure, upgrades, plugin or dependency maintenance and on-call time. Ask any quote to separate one-time migration work from these recurring items.

How long does a migration off CircleCI Server take?

No duration is fixed by the platform itself. The main factors are the number of pipelines and repositories, how many use CircleCI orbs or custom executors, how many environment variables and contexts must be re-created, how much build history and artifact data must be exported before retention windows close, and how many teams must validate their pipelines. Plan for a parallel run in which both systems build the same commits until results match. Ask for a timeline in the written scope that lists these phases and the client sign-offs each one needs.

What does the work need from our own engineering team?

Expect your team to supply decisions and access that only your organization can give: repository and forge administrators, a named owner for each pipeline that must be ported, people who can reissue secrets, and an approver for cutover. CircleCI does not let you read environment variable values back after they are set, so teams must re-enter or rotate them from their source systems. Signed-off test results and deployment targets must be confirmed by the owners of those systems. A written scope should name these roles and how many hours of their time it assumes.

Can our team run self-hosted CI after the engagement ends?

Yes, if the handover includes the material your operators need. Jenkins keeps its configuration, plugins and secrets in $JENKINS_HOME on the controller, and its LTS line moves to a new baseline every 12 weeks, so someone must plan regular upgrades and plugin reviews. Woodpecker stores its state in its server database and runs agents that connect over gRPC, so backup and agent capacity need an owner. Ask for runbooks, backup and restore tests, and a training plan for each operator before the engagement closes.

Will Woodpecker CI work with the forge we already use?

Probably, but confirm your exact forge version first. Woodpecker's forge documentation lists GitHub, Gitea, Forgejo, GitLab, Bitbucket and Bitbucket Datacenter, with push, tag and pull request events on all of them, so you can keep your repositories where they are and move only the builds in-house. The same documentation states that connecting multiple forges to one server is still experimental, so a mixed-forge estate needs a specific test plan. Check webhook reachability from your forge into your network and the agent network paths before committing.

What should a written quote for this work include?

A quote should follow from a written scope that lists the pipelines in scope, the forge and identity integrations, the target platform (Woodpecker CI, Jenkins or GitLab CI/CD), the secret and artifact export plan, the parallel-run period, the test and acceptance criteria, the security hardening and backup tests, the documentation and training, and any retainer for upgrades and support. Deliverables and timelines are agreed in writing before work starts. Ask DeployOpen to state which items are fixed-scope and which are retainers, and ask which client-side items are assumed and what happens if they change.

Do self-hosted CI engines carry licensing or upgrade risks we should check?

Yes. Woodpecker is licensed under Apache-2.0 and Jenkins under the MIT License, so the engine itself has no per-seat charge, but plugins and add-ons carry their own licenses and maintenance. GitLab's source is open core, with content under its ee/ directory under the GitLab Enterprise Edition license, so confirm which features your plan needs before choosing it. GitLab also requires upgrades to pass through required upgrade stops, so an upgrade path must be planned. Ask for a license inventory of every plugin and component in the proposed design.

When to keep CircleCI Server and when to move

Keep CircleCI Server when the network boundary is the hard constraint and your team already runs the platform well. CircleCI Server 4.10 installs into a Kubernetes cluster you control, so builds, artifacts and environment variables can stay inside your network without a full pipeline rewrite. That matters most when orbs, contexts and workflows are embedded across many repositories, when a move would delay release work, or when internal policy expects a named vendor under contract. Before deciding, ask CircleCI in writing which Server releases are supported, what the support scope covers for the Kubernetes, Nomad, MongoDB, PostgreSQL, RabbitMQ, Redis and Vault components, and whether your license counts builds, containers, users or machines. The price is not published, so the answer to that licensing question drives the whole comparison.

Move when the operating load or the unpublished price outweighs the convenience of a vendor-supported install. Server asks your platform team to run Kubernetes and Nomad, operate MongoDB, PostgreSQL, RabbitMQ, Redis and Vault, and carry every upgrade through that stack. Open-source engines shrink it. Woodpecker CI is Apache-2.0, uses SQLite by default with PostgreSQL recommended for larger instances, and runs steps on Docker or Kubernetes, so the footprint can be a server, agents and one database. Jenkins is MIT-licensed and keeps configuration, plugins and secrets in $JENKINS_HOME on the controller, which makes the backup scope clear but puts plugin upkeep on your team. If your forge is also moving, GitLab's pricing page lists Premium at 29 US dollars per user per month billed annually for self-managed installations, and GitLab documents offline operation. The cost moves to your staff: patching, backup restore tests and on-call coverage.

Whichever way the team leans, get the terms in writing before a renewal or migration plan is approved. Ask CircleCI for the Server license terms, the term length, how renewal pricing is set, whether self-hosted build capacity is metered, and exactly which components and versions the support agreement covers. Vendors have changed how they charge for self-managed capacity: Atlassian introduced per-slot pricing for premium Bitbucket Pipelines runners, and GitHub's announced per-minute charge for self-hosted runners was postponed after it was announced. Ask whether a similar change could reach your CircleCI Server agreement. Then build a short exit plan covering config files, a secrets inventory, artifact retention and a rotation schedule, so the option to move stays open whatever the answers show.

How DeployOpen deploys CI inside your network

DeployOpen plans, implements, integrates, hardens, backs up, documents and supports self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For CircleCI Server vs self-hosted open-source CI, that means deciding which engine fits your forge, runners and compliance evidence, then building it in your environment.

How we scope

  • Inventory the CircleCI Server footprint, including Kubernetes, Nomad, MongoDB, PostgreSQL, RabbitMQ, Redis and Vault dependencies.
  • Map which repositories, forges, deployment targets and secrets each pipeline touches before choosing Woodpecker CI, Jenkins or GitLab CI/CD.
  • Agree scope, deliverables and timelines in writing before work starts, since most engagements are fixed-scope.

How we build

  • Stand up the chosen CI engine and its agents or runners inside your network, with no dependency on a hosted control plane.
  • Convert pipeline configuration into the target format and test each pipeline against representative branches and events.
  • Configure secret storage, artifact retention and backups so credentials and build history stay under your control.

How we hand over

  • Document the architecture, pipeline ownership, upgrade procedure and recovery steps for your platform and security teams.
  • Prepare control and evidence material for your compliance assessment, while independent auditors issue any formal opinion.
  • Run a parallel-run period with your current CI so teams can compare results before the old service is switched off.

How we support

  • Offer ongoing support, upgrades and continuous testing as a retainer after handover, scoped separately from the build.
  • Track upstream releases and plugin or LTS changes so your team is not surprised by breaking updates.
  • Ask any provider to confirm support hours, response commitments and update cadence in writing before you sign.

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.