Skip to content

Commit 8551000

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

File tree

5 files changed

+25
-24
lines changed

5 files changed

+25
-24
lines changed

.gitlab-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ stages:
22
- container
33
- container:boot
44

5-
default:
5+
.default-retry:
66
retry:
77
max: 2
88
when:

.gitlab/ci/container-boot.gitlab-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.container:boot:
22
extends:
33
- .dind
4+
- .default-retry
45
stage: container:boot
56
image: ghcr.io/code0-tech/build-images/reticulum-builder:207.1-ruby-3.2.2
67
variables:

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
.image-build-base:
22
extends:
33
- .dind
4+
- .default-retry
45
image: ghcr.io/code0-tech/build-images/reticulum-builder:207.1-ruby-3.2.2
56
stage: container
7+
variables:
8+
PLATFORM_ARGS: "--platform linux/amd64,linux/arm64"
69
script:
710
- source support/helpers.sh
811
- docker_login
12+
- docker_setup_multi_arch
913
- 'image=$(echo "$CI_JOB_NAME" | cut -d : -f 2)'
1014
- '[ -z "$NEED_PROJECT_DOWNLOAD" ] || download_project $image'
1115
retry:
@@ -17,18 +21,14 @@
1721
- .image-build-base
1822
script:
1923
- !reference [.image-build-base, script]
20-
- build_image $image $CI_PIPELINE_ID
21-
- push_image $image $CI_PIPELINE_ID
24+
- build_image $image $CI_PIPELINE_ID "--push"
2225

2326
.variant-image-build-base:
2427
extends:
2528
- .image-build-base
2629
script:
2730
- !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
31+
- build_image $image $CI_PIPELINE_ID "--build-arg VARIANT=$VARIANT --push" $(get_image_tag $CI_PIPELINE_ID $VARIANT)
3232

3333
container:mise:
3434
extends:

container/ruby/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ ARG RETICULUM_IMAGE_TAG=local
22

33
FROM ghcr.io/code0-tech/reticulum/ci-builds/mise:$RETICULUM_IMAGE_TAG
44

5-
ARG RUBY_VERSION=3.2.2
5+
ARG RUBY_VERSION=3.4.7
66

77
RUN apk add --update --no-cache build-base tzdata zlib-dev perl linux-headers libffi readline yaml-dev
8-
RUN mise install-into ruby@$RUBY_VERSION /usr/local/share/ruby
8+
RUN mise install-into ruby@$RUBY_VERSION /usr/local/share/ruby; exit_code=$?; [ $exit_code -ne 0 ] && tail -n 500 /tmp/ruby-build.*.log; exit $exit_code
99
ENV PATH=/usr/local/share/ruby/bin:$PATH

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)