Skip to content

Commit aa14e6d

Browse files
authored
feat: docker multi-arch release support via Cirrus CI (#19)
* feat: docker multi-arch release support via cirrus ci * chore: ci task to tag/push docker images version aliases [skip ci]
1 parent af9d30a commit aa14e6d

File tree

4 files changed

+62
-46
lines changed

4 files changed

+62
-46
lines changed

.cirrus.yml

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,63 @@ task:
1919
cpu: 4
2020
memory: 4G
2121

22-
script:
23-
- docker build -t joseluisq/rust-linux-darwin-builder:latest -f Dockerfile .
24-
- docker run --rm -v $PWD:/root/src joseluisq/rust-linux-darwin-builder:latest bash -c 'set -eu; make test-ci'
22+
build_script: make build
23+
run_script: make test
24+
25+
task:
26+
only_if: $CIRRUS_TAG != ''
27+
alias: build-linux-image
28+
timeout_in: 120m
29+
env:
30+
DOCKER_USERNAME: ENCRYPTED[db65fd6fc1af68040964a27c82f2cbd202c849199038cfddc961a573d803a4f2793ba30eede0b6bcdb6bbf29f5c4f012]
31+
DOCKER_PASSWORD: ENCRYPTED[c201154ee561b3ca486047160db1c2ae77f766abf880feb5f57a10201374ba661ec7a796928ca8eb3a92aa007c684c37]
32+
matrix:
33+
- name: linux-amd64
34+
env:
35+
CIRRUS_ARCH: amd64
36+
compute_engine_instance:
37+
image_project: cirrus-images
38+
image: family/docker-builder
39+
platform: linux
40+
cpu: 8
41+
memory: 8G
42+
43+
- name: linux-arm64
44+
env:
45+
CIRRUS_ARCH: arm64
46+
compute_engine_instance:
47+
image_project: cirrus-images
48+
image: family/docker-builder-arm64
49+
architecture: arm64
50+
platform: linux
51+
cpu: 4
52+
memory: 4G
53+
54+
build_script: TAG=$CIRRUS_ARCH make build
55+
login_script: docker login --username $DOCKER_USERNAME --password $DOCKER_PASSWORD
56+
push_script: docker push joseluisq/rust-linux-darwin-builder:$CIRRUS_ARCH
57+
58+
release_docker_builder:
59+
only_if: $CIRRUS_TAG != ''
60+
depends_on:
61+
- build-linux-image
62+
env:
63+
DOCKER_USERNAME: ENCRYPTED[db65fd6fc1af68040964a27c82f2cbd202c849199038cfddc961a573d803a4f2793ba30eede0b6bcdb6bbf29f5c4f012]
64+
DOCKER_PASSWORD: ENCRYPTED[c201154ee561b3ca486047160db1c2ae77f766abf880feb5f57a10201374ba661ec7a796928ca8eb3a92aa007c684c37]
65+
login_script: docker login --username $DOCKER_USERNAME --password $DOCKER_PASSWORD
66+
manifests_script: |
67+
docker manifest create \
68+
joseluisq/rust-linux-darwin-builder:latest \
69+
--amend joseluisq/rust-linux-darwin-builder:amd64 \
70+
--amend joseluisq/rust-linux-darwin-builder:arm64
71+
push_manifest_script: docker manifest push joseluisq/rust-linux-darwin-builder:latest
72+
push_aliases_script: |
73+
SEMVER=${CIRRUS_TAG##*v}
74+
SEMVER_MAJOR=${SEMVER%.*.*}
75+
SEMVER_MINOR=${SEMVER%.*}
76+
docker tag joseluisq/rust-linux-darwin-builder:latest joseluisq/rust-linux-darwin-builder:${SEMVER}
77+
docker tag joseluisq/rust-linux-darwin-builder:${SEMVER} joseluisq/rust-linux-darwin-builder:${SEMVER_MAJOR}
78+
docker tag joseluisq/rust-linux-darwin-builder:${SEMVER} joseluisq/rust-linux-darwin-builder:${SEMVER_MINOR}
79+
docker push joseluisq/rust-linux-darwin-builder:${SEMVER}
80+
docker push joseluisq/rust-linux-darwin-builder:${SEMVER_MAJOR}
81+
docker push joseluisq/rust-linux-darwin-builder:${SEMVER_MINOR}

.github/workflows/release.yml

Lines changed: 0 additions & 41 deletions
This file was deleted.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ buildx:
2525
.PHONY: buildx
2626

2727
test:
28-
@docker run --rm -it \
28+
@docker run --rm \
2929
-v $(PWD):/root/src \
3030
-w /root/src \
3131
$(REPOSITORY)/rust-linux-darwin-builder:$(TAG) \

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
<div align="center">
1616

17-
[![devel](https://github.com/joseluisq/rust-linux-darwin-builder/workflows/devel/badge.svg)](https://github.com/joseluisq/rust-linux-darwin-builder/actions?query=workflow%3Adevel) [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/joseluisq/rust-linux-darwin-builder/1)](https://hub.docker.com/r/joseluisq/rust-linux-darwin-builder/) [![Docker Image Size (tag)](https://img.shields.io/docker/image-size/joseluisq/rust-linux-darwin-builder/1)](https://hub.docker.com/r/joseluisq/rust-linux-darwin-builder/tags) [![Docker Image](https://img.shields.io/docker/pulls/joseluisq/rust-linux-darwin-builder.svg)](https://hub.docker.com/r/joseluisq/rust-linux-darwin-builder/)
17+
[![Build Status](https://api.cirrus-ci.com/github/joseluisq/rust-linux-darwin-builder.svg)](https://cirrus-ci.com/github/joseluisq/rust-linux-darwin-builder) [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/joseluisq/rust-linux-darwin-builder/1)](https://hub.docker.com/r/joseluisq/rust-linux-darwin-builder/) [![Docker Image Size (tag)](https://img.shields.io/docker/image-size/joseluisq/rust-linux-darwin-builder/1)](https://hub.docker.com/r/joseluisq/rust-linux-darwin-builder/tags) [![Docker Image](https://img.shields.io/docker/pulls/joseluisq/rust-linux-darwin-builder.svg)](https://hub.docker.com/r/joseluisq/rust-linux-darwin-builder/)
1818

1919
</div>
2020

0 commit comments

Comments
 (0)