example-concourse-pipeline icon indicating copy to clipboard operation
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 with v13.6.0)
  • yarn (last tested with 1.21.1)
  • ruby (last tested with 2.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 ruby installed
  • 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