This repository helps you build both the web and worker arm64
components for Concourse CI - prebuilt Docker images can be found on Docker Hub rdclda/concourse.
Concourse | git | github-release | registry-image | semver | time | mock | s3 | slack-alert |
---|---|---|---|---|---|---|---|---|
v7.1.0 | v1.12.0 | v1.5.2 | v1.2.0 | v1.3.0 | v1.5.0 | v0.11.1 | v1.1.1 | v0.15.0 |
v7.2.0 | v1.12.1 | v1.5.2 | v1.2.1 | v1.3.0 | v1.6.0 | v0.11.1 | v1.1.1 | v0.15.0 |
v7.3.2 | v1.14.0 | v1.6.1 | v1.3.0 | v1.3.1 | v1.6.0 | v0.11.2 | v1.1.1 | v0.15.0 |
v7.4.0 | v1.14.0 | v1.6.2 | v1.4.0 | v1.3.4 | v1.6.1 | v0.12.2 | v1.1.2 | v0.15.0 |
v7.4.1 | v1.14.0 | v1.6.4 | v1.4.0 | v1.3.4 | v1.6.1 | v0.12.2 | v1.1.2 | v0.15.0 |
v7.4.2 | v1.14.0 | v1.6.4 | v1.4.0 | v1.3.4 | v1.6.1 | v0.12.2 | v1.1.2 | v0.15.0 |
v7.4.3 | v1.14.0 | v1.6.4 | v1.4.0 | v1.3.4 | v1.6.1 | v0.12.2 | v1.1.2 | v0.15.0 |
v7.4.4 | v1.14.0 | v1.6.4 | v1.4.0 | v1.3.4 | v1.6.1 | v0.12.2 | v1.1.2 | v0.15.0 |
v7.5.0 | v1.14.4 | v1.6.4 | v1.4.1 | v1.3.4 | v1.6.2 | v0.12.3 | v1.1.3 | v0.15.0 |
v7.6.0 | v1.14.5 | v1.6.4 | v1.4.1 | v1.3.4 | v1.6.2 | v0.12.3 | v1.1.3 | v0.15.0 |
v7.7.0 | v1.14.5 | v1.6.4 | v1.5.0 | v1.3.4 | v1.6.3 | v0.12.3 | v1.2.0 | v0.15.0 |
v7.7.1 | v1.14.5 | v1.6.4 | v1.5.0 | v1.3.4 | v1.6.3 | v0.12.3 | v1.2.0 | v0.15.0 |
v7.8.0 | v1.14.5 | v1.7.1 | v1.5.1 | v1.4.0 | v1.6.3 | v0.12.4 | v1.2.1 | v0.15.0 |
v7.8.1 | v1.14.5 | v1.7.2 | v1.5.1 | v1.4.0 | v1.6.3 | v0.12.4 | v1.2.1 | v0.15.0 |
v7.8.2 | v1.14.5 | v1.7.2 | v1.5.1 | v1.4.0 | v1.6.3 | v0.12.4 | v1.2.1 | v0.15.0 |
v7.8.3 | v1.14.5 | v1.7.2 | v1.5.1 | v1.4.0 | v1.6.3 | v0.12.4 | v1.2.1 | v0.15.0 |
v7.9.0 | v1.14.6 | v1.8.0 | v1.7.0 | v1.5.0 | v1.6.3 | v0.12.4 | v1.2.1 | v0.15.0 |
v7.9.1 | v1.14.7 | v1.8.0 | v1.7.1 | v1.5.1 | v1.6.3 | v0.12.4 | v1.2.1 | v0.15.0 |
Each Docker image includes the CLIs for Linux/Mac/Windows for the Intel platform - they can be downloaded from the Concourse web console.
The following tasks have been ported to the arm64
platform:
Task | Image | Version | Description |
---|---|---|---|
dcind | rdclda/concourse-dcind-task | 1.0.0 | A task for running Docker Compose in Docker |
oci-build | rdclda/concourse-oci-build-task | 0.9.0 | A task for building OCI images |
Copy the example docker-compose.yaml to your Raspberry Pi and update the external IP address setting CONCOURSE_EXTERNAL_URL
.
# On your Macbook M1/M2 machine
$ podman-compose up -d
# Login using fly - update your IP here too ;-)
$ export FLY_TARGET=my-m2
$ fly --target=$FLY_TARGET login \
--concourse-url=http://concourse.localtest.me:8080 \
--username=test \
--password=test
You can now access the Concourse web console using http://concourse.localtest.me:8080/.
These tests are provided to verify the correct working of the bundled resource types.
Prepare some surrounding service requirements first:
# create a public s3 bucket
$ export S3_BUCKET_NAME=rdclda-concourse-s3-test
$ aws s3api create-bucket --acl public-read \
--bucket $S3_BUCKET_NAME --region us-east-1
# push test file to s3 bucket
$ echo "Looks like the s3 resource is working." | \
aws s3 cp - s3://$S3_BUCKET_NAME/testfile.txt \
--acl public-read
# define your Slack webhook URL
$ export SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
Now, we can deploy and run the tests:
# deploy & kick off the bundled resource tests
$ for resource in registry-image time git s3 mock slack-alert; do
fly -t $FLY_TARGET set-pipeline -n -p test-${resource}-resource -c tests/$resource-resource.yaml \
--var s3-bucket-name=$S3_BUCKET_NAME \
--var slack-webhook-url=$SLACK_WEBHOOK_URL
fly -t $FLY_TARGET unpause-pipeline -p test-${resource}-resource
fly -t $FLY_TARGET trigger-job --job test-${resource}-resource/test-job
done
# deploy & kick off the external task test
$ for task in dcind oci-build; do
fly -t $FLY_TARGET set-pipeline -n -p test-${task}-task -c external-tasks/${task}/example/pipe.yaml
fly -t $FLY_TARGET unpause-pipeline -p test-${task}-task
fly -t $FLY_TARGET trigger-job --job test-${task}-task/test-job
done
Use the web console to verify the status of the tests.
Follow the steps below if you want to build the images yourself.
- Raspberry Pi 4 with 8Gb of memory (if you want to build
elm
) - Docker daemon + Docker CLI (buildx enabled)
- 4Gb of (Docker assigned) memory
- Bash shell
Elm is a build dependency for the Concourse web component, but is not available for arm64
- therefore elm v0.19.1
has been pre-compiled on arm64
and packaged under ./dist
within this repository.
The two main reasons to not make the elm native binary compilation part of the Concourse CI build are:
- Docker
buildx
fails (crashes) when trying to compile this onamd64
platform - Takes too long
In case you want to build elm yourself, follow the steps below:
# Based upon Ubuntu 20.04
# Raspberry Pi 4 with 8Gb memory and SSD storage attached
# Expect build to take up to 3+ hours
apt-get update && apt-get install ghc cabal-install -y
apt-get install git curl -y
git config --global user.email "info@rdc.pt" && \
git config --global user.name "Robin Daniel Consultants, Lda."
mkdir -p /tmp/build && cd /tmp/build
git clone https://github.com/dmy/elm-raspberry-pi.git ./elm-raspberry-pi
cd ./elm-raspberry-pi && git checkout tags/20200611
cd /tmp/build
git clone https://github.com/elm/compiler.git ./elm/compiler
cd ./elm/compiler && git checkout tags/0.19.1
git am -s /tmp/build/elm-raspberry-pi/patches/elm-0.19.1.patch
cabal new-update
cabal new-configure --ghc-option=-split-sections
cabal new-build
After the last step, the build will output the elm binary path.
You will find under the ./build-specs
directory the available configurations for building Concourse CI for arm64
.
# Kick off the build - specify the concourse version you want to build
# Using Intel / Docker Compose:
./build.sh 7.9.1
# Using ARM64 (M1, M2) and podman:
./build_podman_arm64.sh 7.9.1
The generated Docker image will be pushed to the specified repository defined in the .env
file.