Gitpedia

Concourse

Concourse is a container-based automation system written in Go. It's mostly used for CI/CD.

From concourse·Updated May 30, 2026·View on GitHub·

Concourse is an automation system written in Go. It is most commonly used for CI/CD, and is built to scale to any kind of automation pipeline, from simple to complex. The project is written primarily in Go, distributed under the Apache License 2.0 license, first published in 2014. It has gained significant community traction with 7,832 stars and 886 forks on GitHub. Key topics include: ci, ci-cd, concourse, containerd, containers.

Latest release: v8.2.3
May 27, 2026View Changelog →

Concourse: the continuous thing-doer

Discord
Unit Tests
Contributors
Help Wanted

Concourse is an automation system written in Go. It is most commonly used for
CI/CD, and is built to scale to any kind of automation pipeline, from simple to
complex.

registry-image pipeline

Concourse is very opinionated about a few things: idempotency, immutability,
declarative config, stateless workers, and reproducible builds.

<!--- Leaving this here for now my for my own reference ## The road to Concourse v10 [Concourse v10][v10] is the code name for a set of features which, when used in combination, will have a massive impact on Concourse's capabilities as a generic continuous thing-doer. These features, and how they interact, are described in detail in the [Core roadmap: towards v10][v10] and [Re-inventing resource types][prototypes] blog posts. (These posts are *slightly* out of date, but they get the idea across.) Notably, **v10 will make Concourse not suck for multi-branch and/or pull-request driven workflows** - examples of *spatial* change, where the set of things to automate grows and shrinks over time. Because v10 is really an alias for a ton of separate features, there's a lot to keep track of - here's an overview: | Feature | RFC | Status | | ------------------------ | ---------------- | ------ | | `set_pipeline` step | ✔ [#31][rfc-31] | ✔ v5.8.0 (experimental) | | Var sources for creds | ✔ [#39][rfc-39] | ✔ v5.8.0 (experimental), TODO: [#5813][issue-5813] | | Archiving pipelines | ✔ [#33][rfc-33] | ✔ v6.5.0 | | Instanced pipelines | ✔ [#34][rfc-34] | ✔ v7.0.0 (experimental) | | Static `across` step | 🚧 [#29][rfc-29] | ✔ v6.5.0 (experimental) | | Dynamic `across` step | 🚧 [#29][rfc-29] | ✔ v7.4.0 (experimental, not released yet) | | Projects | 🚧 [#32][rfc-32] | 🙏 RFC needs feedback! | | `load_var` step | ✔ [#27][rfc-27] | ✔ v6.0.0 (experimental) | | `get_var` step | ✔ [#27][rfc-27] | 🚧 [#5815][issue-5815] in progress! | | [Prototypes][prototypes] | ✔ [#37][rfc-37] | ⚠ Pending first use of protocol (any of the below) | | `run` step | 🚧 [#37][rfc-37] | ⚠ Pending its own RFC, but feel free to experiment | | Resource prototypes | ✔ [#38][rfc-38] | 🙏 [#5870][issue-5870] looking for volunteers! | | Var source prototypes | | 🚧 [#6275][issue-6275] planned, may lead to RFC | | Notifier prototypes | 🚧 [#28][rfc-28] | ⚠ RFC not ready | The Concourse team at VMware will be working on these features, however in the interest of growing a healthy community of contributors we would really appreciate any volunteers. This roadmap is very easy to parallelize, as it is comprised of many orthogonal features, so the faster we can power through it, the faster we can all benefit. We want these for our own pipelines too! 😆 If you'd like to get involved, hop in [Discord][discord] or leave a comment on any of the issues linked above so we can coordinate. We're more than happy to help figure things out or pick up any work that you don't feel comfortable doing (e.g. UI, unfamiliar parts, etc.). Thanks to everyone who has contributed so far, whether in code or in the community, and thanks to everyone for their patience while we figure out how to support such common functionality the "Concoursey way!" 🙏 [issue-5813]: https://github.com/concourse/concourse/issues/5813 [issue-5814]: https://github.com/concourse/concourse/issues/5814 [issue-5815]: https://github.com/concourse/concourse/issues/5815 [issue-5870]: https://github.com/concourse/concourse/issues/5870 [issue-5921]: https://github.com/concourse/concourse/issues/5921 [issue-6275]: https://github.com/concourse/concourse/issues/6275 [pr-5896]: https://github.com/concourse/concourse/pull/5896 [rfc-27]: https://github.com/concourse/rfcs/blob/master/027-var-steps/proposal.md [rfc-28]: https://github.com/concourse/rfcs/pull/28 [rfc-29]: https://github.com/concourse/rfcs/pull/29 [rfc-31]: https://github.com/concourse/rfcs/blob/master/031-set-pipeline-step/proposal.md [rfc-32]: https://github.com/concourse/rfcs/pull/32 [rfc-33]: https://github.com/concourse/rfcs/blob/master/033-archiving-pipelines/proposal.md [rfc-34]: https://github.com/concourse/rfcs/blob/master/034-instanced-pipelines/proposal.md [rfc-37]: https://github.com/concourse/rfcs/blob/master/037-prototypes/proposal.md [rfc-38]: https://github.com/concourse/rfcs/blob/master/038-resource-prototypes/proposal.md [rfc-39]: https://github.com/concourse/rfcs/blob/master/039-var-sources/proposal.md [v10]: https://blog.concourse-ci.org/2019/07/17/core-roadmap-towards-v10.html [prototypes]: https://blog.concourse-ci.org/2019/10/15/reinventing-resource-types.html --->

Installation

Concourse is distributed as a single concourse binary, available on the Releases page.

If you want to just kick the tires, jump ahead to the Quick Start.

In addition to the concourse binary, there are a few other supported formats.
Consult their GitHub repos for more information:

Quick Start

sh
$ wget https://concourse-ci.org/docker-compose.yml $ docker-compose up -d Creating docs_concourse-db_1 ... done Creating docs_concourse_1 ... done

Concourse will be running at http://localhost:8080.
You can log in with the username/password as test/test.

Next, install fly by downloading it from the web UI at
http://localhost:8080/download-fly and
target your local Concourse as the test user:

sh
$ fly -t ci login -c http://localhost:8080 -u test -p test logging in to team 'main' target saved

You can follow our Getting Started Tutorial
to learn how to write Concourse pipelines.

Configuring a Pipeline

Concourse has no GUI for configuration. Instead, pipelines are defined in
declarative YAML files:

yaml
resources: - name: examples type: git source: uri: https://github.com/concourse/examples jobs: - name: hello-world plan: - get: examples trigger: true - task: hello file: examples/tasks/hello-world.yml

Most operations are done via the accompanying fly CLI. If you've got Concourse
installed, try saving the above example
as hello-world.yml, target your Concourse
instance
, and then run:

sh
fly -t ci set-pipeline -p hello-world -c hello-world.yml

These pipeline files are self-contained, making them easily portable between
Concourse instances.

Learn More

Contributing

Our user base is basically everyone that develops software (and wants it to
work).

It's a lot of work, and we need your help! If you're interested, check out our
contributing docs.

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from concourse/concourse via the GitHub API.Last fetched: 5/31/2026