π΅ Concourse
Concourse is an open-source CI/CD platform designed to automate and streamline the software development and deployment process.
Concourse (code) is an open source automation system written in Go, mostly used for CI/CD. Itβs built to scale to any kind of automation pipeline, simple or complex.
The software is built on the simple mechanics of resources, tasks, and jobs. This general approach to automation makes it great for CI/CD.
Concourse is designed to be expressive, versatile, and safe, remaining intuitive as the complexity of your project grows.
The project has detailed documentation and a relatively active discussion forum.
π Features
- Open source - Concourse's RFC process and governance model invite anyone to become a contributor, developing the project roadmap by collaborating in the open
- Configure as code - a Concourse pipeline is like a distributed, continuous Makefile. Each job has a build plan declaring the job's input resources and what to run with them when they change
resources:
- name: booklit
type: git
source: {uri: "https://github.com/concourse/booklit"}
jobs:
- name: unit
plan:
- get: booklit
trigger: true
- task: test
file: booklit/ci/test.yml
- Visualize to verify - a pipeline is visualized in the web UI. With one click you can see why a job failed. The visualization provides a "gut check" feedback loop: if it looks wrong, it probably is wrong
- CI under source control - all configuration and administration is done using the fly CLI. The fly set-pipeline command pushes the config up to Concourse. Once it looks good, you can then check the file into source control
$ fly -t ci set-pipeline -p booklit -c pipeline.yml
$ vim pipeline.yml
$ fly -t ci set-pipeline -p booklit -c pipeline.yml
$ git add pipeline.yml
$ git commit -m "initial pipeline"β
- Reproducible, debuggable builds - containers ensure a clean environment on every run. Each task specifies its own image, giving it full control over its dependencies. The fly intercept command takes you into one of your build's containers so you can troubleshoot flaky builds
$ fly -t ci intercept -j booklit/unit -s unit
root@2c15ff11:/tmp/build/0df9eea0# ps
PID TTY TIME CMD
171 pts/1 00:00:00 bash
1876 pts/1 00:00:00 ps
root@2c15ff11:/tmp/build/0df9eea0# ls
depspath gopath
root@2c15ff11:/tmp/build/0df9eea0# β
- Rapid local iteration - run a build with local changes using the fly execute command. This build runs in exactly the same way as it would run in your pipeline, without having to push broken commits until it works
~/booklit $ fly -t ci execute -c ci/test.yml
executing build 1 at http://localhost:8080/builds/1
initializing
booklit: 4.74 MiB/s 0s
running gopath/src/github.com/concourse/booklit/ci/test
fetching dependencies...
installing ginkgo...
running tests...
- Bring your own integrations - Concourse does not have a complex plugin system. Instead, it focuses on a single strong abstraction: resource, which are implemented by resource types.To see what resource types are available, check out the Resource Types catalog
resource_types:
- name: rubygem
type: registry-image
source:
repository: troykinsella/concourse-rubygems-resource
resources:
- name: rspec-gem
type: rubygem
source: {gem: rspec}
jobs:
- name: bundle
plan:
- get: rspec-gem
trigger: true
- # ...
π€ As described by AI
(written by AI, edited by humans)
Concourse is an open-source continuous integration and continuous delivery (CI/CD) platform designed to automate and streamline the software development and deployment process. It was originally developed by Pivotal Software, now part of VMware, and is widely used in the DevOps community.
Concourse provides a flexible and declarative approach to defining pipelines, which are used to automate tasks like building, testing, and deploying applications.
The softwareβs open-source nature encourages community contributions and customization to fit specific development and deployment needs.
π Getting started with Concourse
Concourse is distributed as a single concourse binary, making it easy to run almost anywhere, especially with Docker.
Hereβs a look at the docker-compose.yml:
$ curl -O https://concourse-ci.org/docker-compose.yml
$ docker-compose up -d
Creating docs_concourse-db_1 ...
Creating docs_concourse-db_1 ... done
Creating docs_concourse_1 ...
Creating docs_concourse_1 ... done
Concourse will be running at localhost:8080 on your machine. You can log in with the username/password as test
/test
.
Next, install the fly CLI by downloading it from the web UI and login to your local Concourse as the test user
.
Check out the Getting Started docs for more details.