• Stars
    star
    7,157
  • Rank 5,178 (Top 0.2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created about 10 years ago
  • Updated 17 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Concourse is a container-based continuous thing-doer written in Go.

Concourse: the continuous thing-doer.

Discord Build 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.

booklit pipeline

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

The road to Concourse v10

Concourse 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 and Re-inventing resource types 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 ✔ v5.8.0 (experimental)
Var sources for creds #39 ✔ v5.8.0 (experimental), TODO: #5813
Archiving pipelines #33 ✔ v6.5.0
Instanced pipelines #34 ✔ v7.0.0 (experimental)
Static across step 🚧 #29 ✔ v6.5.0 (experimental)
Dynamic across step 🚧 #29 ✔ v7.4.0 (experimental, not released yet)
Projects 🚧 #32 🙏 RFC needs feedback!
load_var step #27 ✔ v6.0.0 (experimental)
get_var step #27 🚧 #5815 in progress!
Prototypes #37 ⚠ Pending first use of protocol (any of the below)
run step 🚧 #37 ⚠ Pending its own RFC, but feel free to experiment
Resource prototypes #38 🙏 #5870 looking for volunteers!
Var source prototypes 🚧 #6275 planned, may lead to RFC
Notifier prototypes 🚧 #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 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!" 🙏

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

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

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

⚠️ If you are using an M1 mac: M1 macs are incompatible with the containerd runtime. After downloading the docker-compose file, change CONCOURSE_WORKER_RUNTIME: "containerd" to CONCOURSE_WORKER_RUNTIME: "houdini". This feature is experimental

Next, install fly by downloading it from the web UI and target your local Concourse as the test user:

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

target saved

Configuring a Pipeline

There is no GUI for configuring Concourse. Instead, pipelines are configured as declarative YAML files:

resources:
- name: booklit
  type: git
  source: {uri: "https://github.com/vito/booklit"}

jobs:
- name: unit
  plan:
  - get: booklit
    trigger: true
  - task: test
    file: booklit/ci/test.yml

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

fly -t ci set-pipeline -p booklit -c booklit.yml

These pipeline files are self-contained, maximizing portability from one Concourse instance to the next.

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.

More Repositories

1

git-resource

tracks commits in a branch of a Git repository
Shell
187
star
2

docker-image-resource

a resource for docker images
Go
165
star
3

concourse-chart

Helm chart to install Concourse
Mustache
139
star
4

semver-resource

automated semantic version bumping
Go
95
star
5

registry-image-resource

a resource for images in a Docker registry
Go
88
star
6

concourse-bosh-deployment

A toolchain for deploying Concourse with BOSH.
Shell
83
star
7

concourse-pipeline-resource

!!! use the `set_pipeline` step instead !!!
Go
76
star
8

oci-build-task

a Concourse task for building OCI images
Go
74
star
9

governance

Documentation and automation for the Concourse project governance model.
Go
67
star
10

s3-resource

Concourse resource for interacting with AWS S3
Go
60
star
11

github-release-resource

a resource for github releases
Go
57
star
12

docs

concourse documentation and website
JavaScript
56
star
13

pool-resource

atomically manages the state of the world (e.g. external environments)
Go
54
star
14

rfcs

An open process for designing substantial changes to Concourse.
50
star
15

time-resource

a resource for triggering on an interval
Go
44
star
16

baggageclaim

stateless volume manager for Concourse builds and resource caches
Go
37
star
17

ci

Configuration files used to automate the testing and release of various versions of Concourse.
Shell
36
star
18

hush-house

Concourse k8s-based environment
HCL
29
star
19

concourse-bosh-release

Concourse BOSH release
HTML
28
star
20

examples

Examples of Concourse workflows
HCL
24
star
21

resource-types

A place where the concourse resource types live.
21
star
22

oxygen-mask

Ruby
14
star
23

mock-resource

a resource for testing; reflects the version it's told, and is able to mirror itself
Go
9
star
24

resource-types-website

Website for Concourse resource types (Beta)
Elm
9
star
25

hg-resource

Mercurial resource for Concourse
Shell
8
star
26

bosh-io-stemcell-resource

tracks BOSH stemcells published on https://bosh.io
Go
8
star
27

retryhttp

Retryable http transport used by baggageclaim client and garden client in ATC
Go
7
star
28

infrastructure

Automation stack for the Concourse project's infrastructure.
HCL
7
star
29

bosh-io-release-resource

tracks BOSH releases published on https://bosh.io
Ruby
7
star
30

tracker-resource

pivotal tracker output resource
Go
6
star
31

datadog-event-resource

Go
4
star
32

prod

bosh/terraform config for our deployments
HCL
3
star
33

flag

flag types for use with jessevdk/go-flags
Go
2
star
34

.github

1
star