From d1254eeee40214ab5de307e80e4c705c4603b883 Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Mon, 2 Oct 2023 12:46:17 +0100 Subject: [PATCH] scripts/make-dockerfile.sh: reuse in the release stage Bonus point, we actually error out when the git command fails. v2: - fix curl quoting - sed match-complete-line-and-remove - inline update make-dockerfile.sh variables Signed-off-by: Emil Velikov --- .gitlab-ci.yml | 10 ++-------- scripts/make-dockerfile.sh | 14 ++++++++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1a19745..8ccf14f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -243,15 +243,9 @@ release: curl -sSf --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file output/${group}.tar.zst ${PACKAGE_REGISTRY_URL}/${group}-${BUILD_VERSION}.tar.zst echo "Uploading ${group}.tar.zst.SHA256" curl -sSf --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file output/${group}.tar.zst.SHA256 ${PACKAGE_REGISTRY_URL}/${group}-${BUILD_VERSION}.tar.zst.SHA256 - sed "/COPY TEMPLATE_ROOTFS_FILE/d" Dockerfile.template > output/Dockerfile.${group} - sed -i "s|TEMPLATE_ROOTFS_FILE|${group}.tar.zst|" output/Dockerfile.${group} package_url=$(./ci/get-public-download-for-generic-package.sh ${group}-${BUILD_VERSION}.tar.zst) - sed -i "s|TEMPLATE_ROOTFS_DOWNLOAD|curl -sOJL \"${package_url}\"|" output/Dockerfile.${group} - sed -i "s|TEMPLATE_ROOTFS_HASH|$(cat output/${group}.tar.zst.SHA256)|" output/Dockerfile.${group} - sed -i "s|TEMPLATE_TITLE|Arch Linux ${group} Image|" output/Dockerfile.${group} - sed -i "s|TEMPLATE_VERSION_ID|${BUILD_VERSION}|" output/Dockerfile.${group} - sed -i "s|TEMPLATE_REVISION|${CI_COMMIT_SHA}|" output/Dockerfile.${group} - sed -i "s|TEMPLATE_CREATED|$(date -Is)|" output/Dockerfile.${group} + scripts/make-dockerfile.sh "${group}" "output" "curl -sOJL \"${package_url}\"" "${group}" + sed -i "/^COPY ${group}.tar.zst \/$/d" output/Dockerfile.${group} done - > curl -sSf --request POST -o commit-response.json diff --git a/scripts/make-dockerfile.sh b/scripts/make-dockerfile.sh index 545d61c..b90adaf 100755 --- a/scripts/make-dockerfile.sh +++ b/scripts/make-dockerfile.sh @@ -4,12 +4,18 @@ set -euo pipefail declare -r GROUP="$1" declare -r OUTPUTDIR="$2" +declare -r DOWNLOAD="$3" +declare -r TITLE="$4" + +# Do not use these directly in the sed below - it will mask git failures +BUILD_VERSION="${BUILD_VERSION:-dev}" +CI_COMMIT_SHA="${CI_COMMIT_SHA:-$(git rev-parse HEAD)}" sed -e "s|TEMPLATE_ROOTFS_FILE|$GROUP.tar.zst|" \ - -e "s|TEMPLATE_ROOTFS_DOWNLOAD|true|" \ + -e "s|TEMPLATE_ROOTFS_DOWNLOAD|$DOWNLOAD|" \ -e "s|TEMPLATE_ROOTFS_HASH|$(cat $OUTPUTDIR/$GROUP.tar.zst.SHA256)|" \ - -e "s|TEMPLATE_TITLE|Arch Linux Dev Image|" \ - -e "s|TEMPLATE_VERSION_ID|dev|" \ - -e "s|TEMPLATE_REVISION|$(git rev-parse HEAD)|" \ + -e "s|TEMPLATE_TITLE|Arch Linux $TITLE Image|" \ + -e "s|TEMPLATE_VERSION_ID|$BUILD_VERSION|" \ + -e "s|TEMPLATE_REVISION|$CI_COMMIT_SHA|" \ -e "s|TEMPLATE_CREATED|$(date -Is)|" \ Dockerfile.template > "$OUTPUTDIR/Dockerfile.$GROUP"