c1cb440531
I'm surprised how difficult it's proven to be to just read input from the terminal without hitting buffer limits. The unit tests on our Windows worker highlighted some undesirable behaviour with the peterh/liner library. It didn't seem to successfully detect the number of columns (at least on Windows), which caused: a) The password prompt to fail b) The regular prompt, well, not printing the prompt c) Not using raw mode, which defeats the whole purpose of this fix! I'm not sure exactly why the columns were detected to be 0, and why the library even cares about the number of columns for something as simple as our use case. peterh/liner does a lot of cool stuff, but we were using practically none of it - so why not go with a simpler solution that we control! In place of peterh/liner, just use a raw mode terminal + our own line reading logic. Unfortunately, since we're using raw mode, new lines don't also come with carriage returns, so I needed to manually add them throughout the print statements. Signed-off-by: Aidan Oldershaw <aoldershaw@pivotal.io> |
||
---|---|---|
.github | ||
atc | ||
cmd | ||
fly | ||
go-concourse | ||
hack | ||
release-notes | ||
screenshots | ||
skymarshal | ||
testflight | ||
topgun | ||
tracing | ||
tsa | ||
vars | ||
web | ||
worker | ||
.dockerignore | ||
.env | ||
.gitignore | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
Dockerfile | ||
LICENSE.md | ||
NOTICE.md | ||
README.md | ||
docker-compose.yml | ||
go.mod | ||
go.sum | ||
package.json | ||
tools.go | ||
versions.go | ||
webpack.config.js | ||
yarn.lock |
README.md
Concourse: the continuous thing-doer.
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.
Concourse is very opinionated about a few things: idempotency, immutability, declarative config, stateless workers, and reproducible builds.
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
.
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
- The Official Site for documentation, reference material, and example pipelines (which no longer live in this repository).
- The Concourse Tutorial by Stark & Wayne is great for a guided introduction to all the core concepts.
- See Concourse in action with our production pipelines
- Hang around in the forums or in Discord.
- See what we're working on on the project board.
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.