Skip to content

Commit e64b114

Browse files
committed
Setup multi arch builds
1 parent c5a0543 commit e64b114

File tree

2 files changed

+20
-21
lines changed

2 files changed

+20
-21
lines changed

.gitlab/ci/container-build.gitlab-ci.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
- .dind
44
image: ghcr.io/code0-tech/build-images/reticulum-builder:207.1-ruby-3.2.2
55
stage: container
6+
variables:
7+
PLATFORM_ARGS: "--platform linux/amd64,linux/arm64"
68
script:
79
- source support/helpers.sh
810
- docker_login
11+
- docker_setup_multi_arch
912
- 'image=$(echo "$CI_JOB_NAME" | cut -d : -f 2)'
1013
- '[ -z "$NEED_PROJECT_DOWNLOAD" ] || download_project $image'
1114
retry:
@@ -17,18 +20,14 @@
1720
- .image-build-base
1821
script:
1922
- !reference [.image-build-base, script]
20-
- build_image $image $CI_PIPELINE_ID
21-
- push_image $image $CI_PIPELINE_ID
23+
- build_image $image $CI_PIPELINE_ID "--push"
2224

2325
.variant-image-build-base:
2426
extends:
2527
- .image-build-base
2628
script:
2729
- !reference [.image-build-base, script]
28-
- build_image $image $CI_PIPELINE_ID "--build-arg VARIANT=$VARIANT"
29-
- image_tag=$(get_image_tag $CI_PIPELINE_ID $VARIANT)
30-
- retag_image $image $CI_PIPELINE_ID $image_tag
31-
- push_image $image $image_tag
30+
- build_image $image $CI_PIPELINE_ID "--build-arg VARIANT=$VARIANT --push" $(get_image_tag $CI_PIPELINE_ID $VARIANT)
3231

3332
container:mise:
3433
extends:

support/helpers.sh

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,22 @@ function docker_login() {
1313
echo $C0_GH_TOKEN | docker login -u $ --password-stdin ghcr.io
1414
}
1515

16+
function docker_setup_multi_arch() {
17+
docker context create build-context
18+
docker buildx create \
19+
--name container-builder \
20+
--driver docker-container \
21+
--bootstrap \
22+
--use \
23+
build-context
24+
docker run --privileged --rm tonistiigi/binfmt --install all
25+
}
26+
1627
function build_image() {
1728
image=$1
1829
reticulum_tag=$2
1930
build_args=$3
31+
reticulum_push_tag=${4:-$reticulum_tag}
2032

2133
echo "Building image for $image"
2234

@@ -25,27 +37,15 @@ function build_image() {
2537
container/$image/renderDockerfile
2638
fi
2739

28-
docker build \
29-
-t "ghcr.io/code0-tech/reticulum/ci-builds/$image:$reticulum_tag" \
40+
docker buildx build \
41+
-t "ghcr.io/code0-tech/reticulum/ci-builds/$image:$reticulum_push_tag" \
3042
-f "container/$image/Dockerfile" \
3143
--build-arg RETICULUM_IMAGE_TAG=$reticulum_tag \
3244
$build_args \
45+
$PLATFORM_ARGS \
3346
.
3447
}
3548

36-
function push_image() {
37-
image=$1
38-
reticulum_tag=$2
39-
docker push "ghcr.io/code0-tech/reticulum/ci-builds/$image:$reticulum_tag"
40-
}
41-
42-
function retag_image() {
43-
image=$1
44-
reticulum_tag=$2
45-
variant_tag=$3
46-
docker image tag "ghcr.io/code0-tech/reticulum/ci-builds/$image:$reticulum_tag" "ghcr.io/code0-tech/reticulum/ci-builds/$image:$variant_tag"
47-
}
48-
4949
function get_image_tag() {
5050
reticulum_tag=$1
5151
reticulum_variant=$2

0 commit comments

Comments
 (0)