example-concourse-pipeline
example-concourse-pipeline copied to clipboard
Sample pipeline for Concourse CI
Example Concourse Pipeline
This is an example for a pipeline for Concourse CI. It is intended to be used as a base to build high quality pipelines.
It is using a sample JavaScript project, but it can be easily adapted to serve any other language.
Running a local concourse
Inspired by this, I've added a script to run an instance of Concourse locally for testing purposes. Just do:
./concourse/run
It is available under localhost:8080 (test/test for auth)
Adding the pipeline to the local installation
A local docker registry is running so that the development image can be stored. Add the pipeline to the local installation with
./go update-pipeline
Changing the pipeline
Note that the pipeline is generated dynamically by using jsonnet. See this blog post for more context about it.
Running things
There is a go script that is the entrypoint of all the tasks. Simply run it without arguments to get a list of available targets.
Requirements
node(last tested withv13.6.0)yarn(last tested with1.21.1)ruby(last tested with2.6.3)
ServerSpec
ServerSpec allows you to run unit tests for infrastructure. You can use it to test that your containers, both build and production, are being created correctly.
Running it in a pipeline is notoriously difficult, and you end up running in the Docker in Docker issue. This repository contains some ready-to-use blocks that can make your life easier.
In order to run these tests, you need:
- A Docker image that can run docker-in-docker and has
rubyinstalled - Building that image as part of the pipeline
- A task that runs that image with elevated privileges
- That script requires a special entrypoint
- The run script itself is making sure the image we built is accessible and running all the tests that we have defined