πŸ”΅ Concourse

Concourse is an open-source CI/CD platform designed to automate and streamline the software development and deployment process.

Concourse CI

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
Visualize your pipeline (source: https://concourse-ci.org/)
  • 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.