From afb314e64b0c6ead905b62bc6ecd07a96a974a6e Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Sun, 25 Oct 2020 03:23:20 +0100 Subject: [PATCH] Get URL via external script --- .gitlab-ci.yml | 24 +++++++++---------- ci/get-public-download-for-generic-package.sh | 9 +++++++ 2 files changed, 21 insertions(+), 12 deletions(-) create mode 100755 ci/get-public-download-for-generic-package.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f3fe895..e50bf88 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -175,11 +175,12 @@ upload_and_commit_rootfs: - | for group in base base-devel; do sed -i "s|${group}.tar.xz|${group}-${BUILD_VERSION}.tar.xz|" output/${group}.tar.xz.SHA256 - sed "/TEMPLATE_ROOTFS_FILE/d" Dockerfile.template > ci/${group}/Dockerfile - sed -i "s|TEMPLATE_ROOTFS_URL|${PACKAGE_REGISTRY_URL}/${group}-${BUILD_VERSION}.tar.xz|" ci/${group}/Dockerfile - sed -i "s|TEMPLATE_ROOTFS_HASH|$(cat output/${group}.tar.xz.SHA256)|" ci/${group}/Dockerfile curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file output/${group}.tar.xz ${PACKAGE_REGISTRY_URL}/${group}-${BUILD_VERSION}.tar.xz curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file output/${group}.tar.xz.SHA256 ${PACKAGE_REGISTRY_URL}/${group}-${BUILD_VERSION}.tar.xz.SHA256 + sed "/TEMPLATE_ROOTFS_FILE/d" Dockerfile.template > ci/${group}/Dockerfile + package_url=$(ci/get-public-download-for-generic-package.sh ${group}-$(BUILD_VERSION).tar.xz) + sed -i "s|TEMPLATE_ROOTFS_URL|${package_url}|" ci/${group}/Dockerfile + sed -i "s|TEMPLATE_ROOTFS_HASH|$(cat output/${group}.tar.xz.SHA256)|" ci/${group}/Dockerfile done - > curl --request POST @@ -208,20 +209,19 @@ release: - apk add jq curl script: - | - package_id=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PROJECT_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages" | jq ".[] | select(.version == \"${BUILD_VERSION}\") | .id") - base_id=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PROJECT_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${package_id}/package_files" | jq ".[] | select(.file_name == \"base-${BUILD_VERSION}.tar.xz\") | .id") - base_sha_id=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PROJECT_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${package_id}/package_files" | jq ".[] | select(.file_name == \"base-${BUILD_VERSION}.tar.xz.SHA256\") | .id") - base_devel_id=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PROJECT_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${package_id}/package_files" | jq ".[] | select(.file_name == \"base-devel-${BUILD_VERSION}.tar.xz\") | .id") - base_devel_sha_id=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PROJECT_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${package_id}/package_files" | jq ".[] | select(.file_name == \"base-devel-${BUILD_VERSION}.tar.xz.SHA256\") | .id") + base_url=$(ci/get-public-download-for-generic-package.sh base-$(BUILD_VERSION).tar.xz) + base_sha_url=$(ci/get-public-download-for-generic-package.sh base-$(BUILD_VERSION).tar.xz.SHA256) + base_devel_url=$(ci/get-public-download-for-generic-package.sh base-$(BUILD_VERSION).tar.xz) + base_devel_sha_url=$(ci/get-public-download-for-generic-package.sh base-devel-$(BUILD_VERSION).tar.xz.SHA256) # TODO: We should actually be able to do something like \"url\":\"${PACKAGE_REGISTRY_URL}/base-${BUILD_VERSION}.tar.xz\" # But it doesn't appear that those downloads are public. I consider this a bug and hopefully it's fixed in a future version! release-cli create --name "Release ${BUILD_VERSION}" --description "Release ${BUILD_VERSION}" \ --tag-name v${BUILD_VERSION} --ref "add-base-devel-tags" \ - --assets-link "{\"name\":\"base-${BUILD_VERSION}.tar.xz\",\"url\":\"https://gitlab.archlinux.org/archlinux/archlinux-docker/-/package_files/${base_id}/download\"}" \ - --assets-link "{\"name\":\"base-${BUILD_VERSION}.tar.xz.SHA256\",\"url\":\"https://gitlab.archlinux.org/archlinux/archlinux-docker/-/package_files/${base_sha_id}/download\"}" \ - --assets-link "{\"name\":\"base-devel-${BUILD_VERSION}.tar.xz\",\"url\":\"https://gitlab.archlinux.org/archlinux/archlinux-docker/-/package_files/${base_devel_id}/download\"}" \ - --assets-link "{\"name\":\"base-devel-${BUILD_VERSION}.tar.xz.SHA256\",\"url\":\"https://gitlab.archlinux.org/archlinux/archlinux-docker/-/package_files/${base_devel_sha_id}/download\"}" + --assets-link "{\"name\":\"base-${BUILD_VERSION}.tar.xz\",\"url\":\"${base_url}\"}" \ + --assets-link "{\"name\":\"base-${BUILD_VERSION}.tar.xz.SHA256\",\"url\":\"${base_sha_url}\"}" \ + --assets-link "{\"name\":\"base-devel-${BUILD_VERSION}.tar.xz\",\"url\":\"${base_devel_url}\"}" \ + --assets-link "{\"name\":\"base-devel-${BUILD_VERSION}.tar.xz.SHA256\",\"url\":\"${base_devel_sha_url}\"}" # Publish base to the Arch Linux group namespace: https://hub.docker.com/r/archlinux/archlinux publish: diff --git a/ci/get-public-download-for-generic-package.sh b/ci/get-public-download-for-generic-package.sh new file mode 100755 index 0000000..3070513 --- /dev/null +++ b/ci/get-public-download-for-generic-package.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -eu + +package_name=$1 + +package_id=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PROJECT_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages" | jq ".[] | select(.version == \"${BUILD_VERSION}\") | .id") +base_id=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PROJECT_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${package_id}/package_files" | jq ".[] | select(.file_name == \"$package_name\") | .id") +echo "https://gitlab.archlinux.org/archlinux/archlinux-docker/-/package_files/${base_id}/download"