From 8501a516fd9c1d21d5c66f992db84d47fff4fd11 Mon Sep 17 00:00:00 2001 From: finn Date: Sun, 24 Jan 2021 23:19:56 -0800 Subject: [PATCH 01/10] Add aptly to signald-builder --- signald-builder.Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/signald-builder.Dockerfile b/signald-builder.Dockerfile index 00beb9a..7152fb4 100644 --- a/signald-builder.Dockerfile +++ b/signald-builder.Dockerfile @@ -12,6 +12,7 @@ RUN apt-get update && apt-get install -y \ git-buildpackage \ gradle-debian-helper \ jq \ + aptly \ && rm -rf /var/lib/apt/lists/* RUN adduser signald COPY deb-scripts/release-deb.sh /usr/bin/release-deb From 7669a049b3dc648ad61a239bf0cc2c117ef34915 Mon Sep 17 00:00:00 2001 From: finn Date: Sun, 24 Jan 2021 23:21:22 -0800 Subject: [PATCH 02/10] and make an x86 version of it --- .gitlab-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aae3573..ba6059b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -37,6 +37,12 @@ test-helper: NAME: "test-helper" allow_failure: true +builder-image:x86: + <<: *build + variables: + DOCKERFILE: "signald-builder.Dockerfile" + NAME: "signald-builder-x86" + builder-image:aarch64: <<: *build tags: [arm-docker-builder] From e48937e13cf72b47740ef38fea2b911948f99c5f Mon Sep 17 00:00:00 2001 From: finn Date: Mon, 25 Jan 2021 01:16:48 -0800 Subject: [PATCH 03/10] package apt-signing-key into signald-builder image --- apt-signing-key.asc | 31 +++++++++++++++++++++++++++++++ signald-builder.Dockerfile | 2 ++ 2 files changed, 33 insertions(+) create mode 100644 apt-signing-key.asc diff --git a/apt-signing-key.asc b/apt-signing-key.asc new file mode 100644 index 0000000..89484f7 --- /dev/null +++ b/apt-signing-key.asc @@ -0,0 +1,31 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQENBFuazg4BCACuz8352FK7Z89KpFEam5u7Xh3OB1ZPxJvh+sHVgrZbNYalYPxW +yHF0ULRPPsVHu02W5AM/O/qbMGEe0JbQvIxdCWAzGGL0fPgR3xn6hBGUDlCTQyDc +keok6jWQsy9etqTTu1eyHaREJpLvKAGXN7Bk2pOIv3WSufYNLTgbdqBCk854n7/P +dvQkU6OFBSU8XiG5UAx5n8mJcmt5JiWa4CEUoJN7IsLTI4YKd2pG4BmXTtfCEk5J +BraPtNxwgRVdM9bWdBfYlftIK1JCPcc5WdN9ejgH0s43rbwRnT3nk5O/XQF3GtO9 +j5UxEu86Xa4zSlYVttL1rWmgdLiEVHzdbK/LABEBAAG0NUphbmt5IFNvbHV0aW9u +cyBCdWlsZCBTZXJ2ZXIgPGJ1aWxkc0BqYW5reS5zb2x1dGlvbnM+iQFUBBMBCAA+ +AhsDBQsJCAcCBhUICQoLAgQWAgMBAh4BAheAFiEE2J/7RSkSKaQQoUMKZZR1CB9m +XykFAl76qqcFCQzF3hkACgkQZZR1CB9mXym7LggAl/DFBdMhsUxMvbXRWl2QixFT +wLZnrkKZwX8Wpab0CRSbme+0vSDfx7t/y65KECQl/tIX2ifP9bjz4FKEMJ/GuDHS +JPdf63EFr+09iGkouC+vPyQMBhY9NqzlZ5Zzt42kHYt0CPw3Kpl1eUyjyFYmhDY6 +zEK4K5EVXgu2Dj4ZBy3pmt6P/Gfdm33zGB4aw9mWNyQ0V0yUMbv77pLKhF8XulX+ +KbNNr9Osqdt8xi3LR06H8BwB6gvxudql62JSvQvO1kRlyQ4ZJwwx96rFHMqeuUzs +faYCS9toSiWNytA5WBXr/QURRhJg8V/duR/PjTDgy4/YFO83syUhxAheXdkfE7kB +DQRbms4OAQgAroyEoIpMtNogrWGzsq0twtMSJNnaR7+Bd1x54+M/O2HNzFBHpT/W +4vYeSSWmfGnKx7E/SgjY3zM8wV/ahSHfVlGv5IpaEj5OsakJNO12UK+3Yike4tTy +U7ONAA/pZtCRQz0PHkGoCZlOfSCU8Tr+RuAJE24j8EhMzbDOdUn7z18LpsBqfA5G +f2CGcgCoI6o00GPqvKdx975sGuoRlQ0VNMQADMvRBrQnRddmF8fd+p1eWeQgUH7j +LbpSBT4zKZwYL7JsTYuDeb+GvaTxnBtL8yTF2A7MYl5PooycvIHIJ8tSjy4U2T2e +/nuFcKyC4hbwuuZMyC9qABgIsMs6DFYyswARAQABiQE8BBgBCAAmAhsMFiEE2J/7 +RSkSKaQQoUMKZZR1CB9mXykFAl2GavMFCQPM0GUACgkQZZR1CB9mXynD8wf/RV1H +9Jo500QbA3T+Ao+lvAe5y89ydhxeJmPNu2snGrQuxz4FgCdVyIUtsq/pKIVD+SIY +U/uXidoOtfBkh8vZ+YPiRjKuyV+d6p1Ke+mHwV6jRM/IyxNCxRJULyZh5VbOcFXN +1ftH5GkLHEUeOtXu9URcYBHNBaIKYC0JxUQ9ce9F1bw3h3c0Tpl/+kFxVQ3hNKTp +bSpnHwEXvjLwP0muW8Wy7nK2a+yZrXjBQDcoE2sx9oJaHtynWruVKmTzy214gUgS +gyfRRGfne79N6ek6bcQQ9DBoSEslELEC/Ki/nwG9jChObt5Z9L6iRxXgD51DIaW0 +zWh8fxxloSY15g7/GA== +=0oUH +-----END PGP PUBLIC KEY BLOCK----- diff --git a/signald-builder.Dockerfile b/signald-builder.Dockerfile index 7152fb4..0fe0dc7 100644 --- a/signald-builder.Dockerfile +++ b/signald-builder.Dockerfile @@ -19,3 +19,5 @@ COPY deb-scripts/release-deb.sh /usr/bin/release-deb COPY deb-scripts/get-component.sh /usr/bin/get-component COPY deb-scripts/repo-cron.sh /usr/bin/repo-cron USER signald +RUN add apt-signing-key.asc /tmp/apt-signing-key.asc +RUN gpg --no-default-keyring --keyring trustedkeys.gpg --import /tmp/apt-signing-key.asc From d5e68709a9b42da7675c6a2544a9620b760e61f1 Mon Sep 17 00:00:00 2001 From: finn Date: Mon, 25 Jan 2021 01:19:26 -0800 Subject: [PATCH 04/10] fix dockerfile --- signald-builder.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/signald-builder.Dockerfile b/signald-builder.Dockerfile index 0fe0dc7..492b374 100644 --- a/signald-builder.Dockerfile +++ b/signald-builder.Dockerfile @@ -19,5 +19,5 @@ COPY deb-scripts/release-deb.sh /usr/bin/release-deb COPY deb-scripts/get-component.sh /usr/bin/get-component COPY deb-scripts/repo-cron.sh /usr/bin/repo-cron USER signald -RUN add apt-signing-key.asc /tmp/apt-signing-key.asc +ADD apt-signing-key.asc /tmp/apt-signing-key.asc RUN gpg --no-default-keyring --keyring trustedkeys.gpg --import /tmp/apt-signing-key.asc From 2026958466419cef704b850778e2453f6a4afd36 Mon Sep 17 00:00:00 2001 From: finn Date: Fri, 19 Feb 2021 13:51:47 -0800 Subject: [PATCH 05/10] Add freebsd-cross-build image --- .gitlab-ci.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ba6059b..de0a5bb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,6 +30,20 @@ signal-server: - echo "docker pull ${CI_REGISTRY_IMAGE}/signal-server:${VERSION}" allow_failure: true +freebsd-cross-build: + image: docker:20.10.0 + stage: build + script: + - apk add git + - git clone https://github.com/wezm/freebsd-cross-build.git + - cd freebsd-cross-build + - VERSION=$(git rev-parse --short=8 HEAD) + - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} + - docker build -t ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:${VERSION} . + - docker push ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:${VERSION} + - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker tag ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:${VERSION} ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:latest && docker push ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:latest; fi + - echo "docker pull ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:${VERSION}" + test-helper: <<: *build variables: From 5d198e21ffb28c0b86cc932df8a2de050f9a048e Mon Sep 17 00:00:00 2001 From: finn Date: Fri, 19 Feb 2021 15:42:37 -0800 Subject: [PATCH 06/10] install git on the final container so it can be used for CI --- .gitlab-ci.yml | 1 + signald-builder.Dockerfile | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index de0a5bb..86f2411 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -37,6 +37,7 @@ freebsd-cross-build: - apk add git - git clone https://github.com/wezm/freebsd-cross-build.git - cd freebsd-cross-build + - echo "RUN apt-get update && apt-get install -y git" >> Dockerfile - VERSION=$(git rev-parse --short=8 HEAD) - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -t ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:${VERSION} . diff --git a/signald-builder.Dockerfile b/signald-builder.Dockerfile index 492b374..f4907ed 100644 --- a/signald-builder.Dockerfile +++ b/signald-builder.Dockerfile @@ -1,4 +1,6 @@ FROM debian:latest +RUN dpkg --add-architecture armhf && dpkg --add-architecture arm64 +ADD apt-signing-key.asc /tmp/apt-signing-key.asc RUN apt-get update && apt-get install -y \ gpg \ dpkg-dev \ @@ -13,11 +15,15 @@ RUN apt-get update && apt-get install -y \ gradle-debian-helper \ jq \ aptly \ + build-essential \ + crossbuild-essential-armhf \ + crossbuild-essential-arm64 \ && rm -rf /var/lib/apt/lists/* -RUN adduser signald + COPY deb-scripts/release-deb.sh /usr/bin/release-deb COPY deb-scripts/get-component.sh /usr/bin/get-component COPY deb-scripts/repo-cron.sh /usr/bin/repo-cron + +RUN adduser signald USER signald -ADD apt-signing-key.asc /tmp/apt-signing-key.asc RUN gpg --no-default-keyring --keyring trustedkeys.gpg --import /tmp/apt-signing-key.asc From 1092e92e1910de9d4180fba99608fcea2cf4571b Mon Sep 17 00:00:00 2001 From: finn Date: Fri, 9 Jul 2021 14:13:11 -0700 Subject: [PATCH 07/10] cross compile docker images with docker buildx --- .gitlab-ci.yml | 48 ++++++++++++++++++++++---------- signald-builder.Dockerfile | 4 +-- signald-cross-builder.Dockerfile | 29 +++++++++++++++++++ 3 files changed, 63 insertions(+), 18 deletions(-) create mode 100644 signald-cross-builder.Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 86f2411..798b498 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,11 +1,12 @@ variables: DOCKER_TLS_CERTDIR: "/certs" + DOCKER_DRIVER: overlay2 services: - - docker:20.10.0-dind + - docker:dind .build: &build - image: docker:20.10.0 + image: docker:latest stage: build script: - docker login -u gitlab-ci-token -p "${CI_JOB_TOKEN}" "${CI_REGISTRY}" @@ -15,6 +16,25 @@ services: - docker push "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker tag "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" "${CI_REGISTRY_IMAGE}/${NAME}:latest" && docker push "${CI_REGISTRY_IMAGE}/${NAME}:latest"; fi +.docker-multiarch-image: &docker-multiarch-image + image: jdrouet/docker-with-buildx:stable + stage: build + tags: [docker-builder] + before_script: # per recommendations from https://github.com/docker/buildx/issues/495#issuecomment-754200673 + - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + - docker buildx create --name cibuilder --driver docker-container --use + - docker buildx inspect --bootstrap + - docker login -u gitlab-ci-token -p "${CI_JOB_TOKEN}" "${CI_REGISTRY}" + script: + - docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" --push . + - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:latest" --push . ; fi + parallel: + matrix: + - PLATFORM: + - linux/amd64 + - linux/arm64/v8 + - linux/arm/v7 + signal-server: image: docker:20.10.0 stage: build @@ -52,22 +72,20 @@ test-helper: NAME: "test-helper" allow_failure: true -builder-image:x86: +signal-cross-builder: <<: *build variables: - DOCKERFILE: "signald-builder.Dockerfile" - NAME: "signald-builder-x86" + DOCKERFILE: "signald-cross-builder.Dockerfile" + NAME: "signald-cross-builder" -builder-image:aarch64: - <<: *build - tags: [arm-docker-builder] - variables: - DOCKERFILE: "signald-builder.Dockerfile" - NAME: "signald-builder-arm" - -builder-image-alpine:aarch64: - <<: *build - tags: [arm-docker-builder] +builder-image-alpine: + <<: *docker-multiarch-image variables: DOCKERFILE: "signald-builder-alpine.Dockerfile" NAME: "signald-builder-alpine-arm" + +signald-builder: + <<: *docker-multiarch-image + variables: + DOCKERFILE: "signald-builder.Dockerfile" + NAME: "signald-builder" \ No newline at end of file diff --git a/signald-builder.Dockerfile b/signald-builder.Dockerfile index f4907ed..b5ae21d 100644 --- a/signald-builder.Dockerfile +++ b/signald-builder.Dockerfile @@ -1,6 +1,6 @@ FROM debian:latest -RUN dpkg --add-architecture armhf && dpkg --add-architecture arm64 ADD apt-signing-key.asc /tmp/apt-signing-key.asc +RUN for p in dpkg-split dpkg-deb tar rm; do ln -s /usr/bin/$p /usr/sbin/$p; done RUN apt-get update && apt-get install -y \ gpg \ dpkg-dev \ @@ -16,8 +16,6 @@ RUN apt-get update && apt-get install -y \ jq \ aptly \ build-essential \ - crossbuild-essential-armhf \ - crossbuild-essential-arm64 \ && rm -rf /var/lib/apt/lists/* COPY deb-scripts/release-deb.sh /usr/bin/release-deb diff --git a/signald-cross-builder.Dockerfile b/signald-cross-builder.Dockerfile new file mode 100644 index 0000000..f4907ed --- /dev/null +++ b/signald-cross-builder.Dockerfile @@ -0,0 +1,29 @@ +FROM debian:latest +RUN dpkg --add-architecture armhf && dpkg --add-architecture arm64 +ADD apt-signing-key.asc /tmp/apt-signing-key.asc +RUN apt-get update && apt-get install -y \ + gpg \ + dpkg-dev \ + apt-utils \ + wget \ + dh-make \ + debhelper \ + javahelper \ + gradle \ + default-jdk-headless \ + git-buildpackage \ + gradle-debian-helper \ + jq \ + aptly \ + build-essential \ + crossbuild-essential-armhf \ + crossbuild-essential-arm64 \ + && rm -rf /var/lib/apt/lists/* + +COPY deb-scripts/release-deb.sh /usr/bin/release-deb +COPY deb-scripts/get-component.sh /usr/bin/get-component +COPY deb-scripts/repo-cron.sh /usr/bin/repo-cron + +RUN adduser signald +USER signald +RUN gpg --no-default-keyring --keyring trustedkeys.gpg --import /tmp/apt-signing-key.asc From 48ef238ceb4972ee823904f3fb55e5fe4632b3c7 Mon Sep 17 00:00:00 2001 From: finn Date: Fri, 23 Jul 2021 22:45:18 -0700 Subject: [PATCH 08/10] Allow platform to be selected in image name --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 798b498..d5e4b8a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,9 +25,10 @@ services: - docker buildx create --name cibuilder --driver docker-container --use - docker buildx inspect --bootstrap - docker login -u gitlab-ci-token -p "${CI_JOB_TOKEN}" "${CI_REGISTRY}" + - export platform_sanatized=$(echo ${PLATFORM:6} | sed 's#/#-#g') script: - - docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" --push . - - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:latest" --push . ; fi + - docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform-sanatized}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform-sanatized}:${CI_COMMIT_REF_SLUG}" --push . + - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:latest" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform-sanatized}:latest" --push . ; fi parallel: matrix: - PLATFORM: From 84f7822a13c12661deb771c550e476c888e35f1a Mon Sep 17 00:00:00 2001 From: finn Date: Fri, 23 Jul 2021 23:00:27 -0700 Subject: [PATCH 09/10] typo --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d5e4b8a..fa9d75c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,7 +28,7 @@ services: - export platform_sanatized=$(echo ${PLATFORM:6} | sed 's#/#-#g') script: - docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform-sanatized}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform-sanatized}:${CI_COMMIT_REF_SLUG}" --push . - - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:latest" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform-sanatized}:latest" --push . ; fi + - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:latest" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform_sanatized}:latest" --push . ; fi parallel: matrix: - PLATFORM: From 010941fcc73a47446d8037333eac25846d85f42a Mon Sep 17 00:00:00 2001 From: finn Date: Fri, 23 Jul 2021 23:01:50 -0700 Subject: [PATCH 10/10] more typos --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fa9d75c..5fee56a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,7 +27,7 @@ services: - docker login -u gitlab-ci-token -p "${CI_JOB_TOKEN}" "${CI_REGISTRY}" - export platform_sanatized=$(echo ${PLATFORM:6} | sed 's#/#-#g') script: - - docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform-sanatized}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform-sanatized}:${CI_COMMIT_REF_SLUG}" --push . + - docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform_sanatized}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform_sanatized}:${CI_COMMIT_REF_SLUG}" --push . - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:latest" -t "${CI_REGISTRY_IMAGE}/${NAME}-${platform_sanatized}:latest" --push . ; fi parallel: matrix: