Concourse is an open-source container-centric CI/CD tool written in Golang that is heavily used by Pivotal and is gradually gaining recognition in the community. Users can specify how automation should take place by creating a YAML based manifest that declares how it should take place. It has support for integrations such as GitHub, JFROG Artifactory, Slack and others that can be found on the official concourse page.
Couple of interesting thing I really like about concourse .
- User Interface which gives visibility into running builds and pipelines and help facilitate debugging .
- Anything can be automated or scripted in any language of your choice
- Ability to intercept containers that are being used to run builds and make changes or troubleshoot errors.
- Easy to scale.
- All containers are ephemeral and reproducible
- support for vault and different authentication types.
- log visibility
Just like other automation tools, you can specify jobs and have tasks within the jobs specified in a pipeline (Pipeline->Job->Task). We also have resource and resource types that help specify what to be part of the builds. Concourse has three major components , the Air Traffic Controller which serves the purpose of providing web UI and Build scheduling , the TSA which register workers and the worker that serves as runtime environment for containers and manages cache.
Since this is a fairly new project, there are still a lot that can be improved with the application. I noticed a couple of container volume issues and concourse workers intermittently getting stalled during builds. The great thing is concourse has an active discord community that can help with issues encountered.
Concourse can be set up locally on Mac, windows and Linux OS’s for development purposes. Concourse is infrastructure agnostic so It can also be setup on AWS, google cloud and azure. I will be making a post on setting up concourse locally on Mac OS later on.