Concourse
Concourse is a container-based continuous thing-doer written in Go
Built on the simple mechanics of resources, tasks, and jobs, Concourse presents a general approach to automation that makes it great for CI/CD. Concourse is designed to be expressive, versatile, and safe, remaining intuitive as the complexity of your project grows. 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. Your pipeline is then visualized in the web UI, taking only one click to get from a failed job to seeing why it failed. The visualization provides a "gut check" feedback loop: if it looks wrong, it probably is wrong. Jobs can depend on other jobs by configuring passed constraints. The resulting chain of jobs and resources is a dependency graph that continuously pushes your project forward, from source code to production.