From 79b139f77ca7c2c4d4837eec505e84fdfb7452ae Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Wed, 22 Jan 2025 02:16:17 +0100 Subject: [PATCH 1/2] ci: fix missing build args for dev and release Signed-off-by: Jens Langhammer --- .github/actions/docker-push-variables/action.yml | 8 ++++++++ .github/actions/docker-push-variables/push_vars.py | 7 +++++++ .github/workflows/_reusable-docker-build-single.yaml | 4 ++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/actions/docker-push-variables/action.yml b/.github/actions/docker-push-variables/action.yml index 04fdb8d6b2c4..2b1fc9ce262d 100644 --- a/.github/actions/docker-push-variables/action.yml +++ b/.github/actions/docker-push-variables/action.yml @@ -9,6 +9,9 @@ inputs: image-arch: required: false description: "Docker image arch" + release: + required: true + description: "True if this is a release build, false if this is a dev/PR build" outputs: shouldPush: @@ -44,6 +47,9 @@ outputs: imageMainName: description: "Docker image main name" value: ${{ steps.ev.outputs.imageMainName }} + imageBuildArgs: + description: "Docker image build args" + value: ${{ steps.ev.outputs.imageBuildArgs }} runs: using: "composite" @@ -54,6 +60,8 @@ runs: env: IMAGE_NAME: ${{ inputs.image-name }} IMAGE_ARCH: ${{ inputs.image-arch }} + RELEASE: ${{ inputs.release }} PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }} + REF: ${{ github.ref }} run: | python3 ${{ github.action_path }}/push_vars.py diff --git a/.github/actions/docker-push-variables/push_vars.py b/.github/actions/docker-push-variables/push_vars.py index feeae09b8c3b..d97a80f93c5d 100644 --- a/.github/actions/docker-push-variables/push_vars.py +++ b/.github/actions/docker-push-variables/push_vars.py @@ -80,6 +80,12 @@ def get_attest_image_names(image_with_tags: list[str]): cache_to = f"type=registry,ref={get_attest_image_names(image_tags)}:{_cache_tag},mode=max" +image_build_args = [] +if os.getenv("RELEASE", "false").lower() == "true": + image_build_args = [f"VERSION={os.getenv('REF')}"] +else: + image_build_args = [f"GIT_BUILD_HASH={sha}"] + with open(os.environ["GITHUB_OUTPUT"], "a+", encoding="utf-8") as _output: print(f"shouldPush={str(should_push).lower()}", file=_output) print(f"sha={sha}", file=_output) @@ -91,3 +97,4 @@ def get_attest_image_names(image_with_tags: list[str]): print(f"imageMainTag={image_main_tag}", file=_output) print(f"imageMainName={image_tags[0]}", file=_output) print(f"cacheTo={cache_to}", file=_output) + print(f"imageBuildArgs={dumps(image_build_args)}", file=_output) diff --git a/.github/workflows/_reusable-docker-build-single.yaml b/.github/workflows/_reusable-docker-build-single.yaml index cca6a9a2139e..ef8ceb858207 100644 --- a/.github/workflows/_reusable-docker-build-single.yaml +++ b/.github/workflows/_reusable-docker-build-single.yaml @@ -50,6 +50,7 @@ jobs: with: image-name: ${{ inputs.image_name }} image-arch: ${{ inputs.image_arch }} + release: ${{ inputs.release }} - name: Login to Docker Hub if: ${{ inputs.registry_dockerhub }} uses: docker/login-action@v3 @@ -80,8 +81,7 @@ jobs: secrets: | GEOIPUPDATE_ACCOUNT_ID=${{ secrets.GEOIPUPDATE_ACCOUNT_ID }} GEOIPUPDATE_LICENSE_KEY=${{ secrets.GEOIPUPDATE_LICENSE_KEY }} - build-args: | - VERSION=${{ github.ref }} + build-args: ${{ fromJson(steps.ev.outputs.imageBuildArgs) }} tags: ${{ steps.ev.outputs.imageTags }} platforms: linux/${{ inputs.image_arch }} cache-from: type=registry,ref=${{ steps.ev.outputs.attestImageNames }}:buildcache-${{ inputs.image_arch }} From 7a0f24c1851bc2256f59bd2b17029df80204c0e9 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Wed, 22 Jan 2025 02:46:09 +0100 Subject: [PATCH 2/2] fix? Signed-off-by: Jens Langhammer --- .github/actions/docker-push-variables/push_vars.py | 3 ++- .github/workflows/_reusable-docker-build-single.yaml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/actions/docker-push-variables/push_vars.py b/.github/actions/docker-push-variables/push_vars.py index d97a80f93c5d..578fceb57f09 100644 --- a/.github/actions/docker-push-variables/push_vars.py +++ b/.github/actions/docker-push-variables/push_vars.py @@ -85,6 +85,7 @@ def get_attest_image_names(image_with_tags: list[str]): image_build_args = [f"VERSION={os.getenv('REF')}"] else: image_build_args = [f"GIT_BUILD_HASH={sha}"] +image_build_args = "\n".join(image_build_args) with open(os.environ["GITHUB_OUTPUT"], "a+", encoding="utf-8") as _output: print(f"shouldPush={str(should_push).lower()}", file=_output) @@ -97,4 +98,4 @@ def get_attest_image_names(image_with_tags: list[str]): print(f"imageMainTag={image_main_tag}", file=_output) print(f"imageMainName={image_tags[0]}", file=_output) print(f"cacheTo={cache_to}", file=_output) - print(f"imageBuildArgs={dumps(image_build_args)}", file=_output) + print(f"imageBuildArgs={image_build_args}", file=_output) diff --git a/.github/workflows/_reusable-docker-build-single.yaml b/.github/workflows/_reusable-docker-build-single.yaml index ef8ceb858207..c7896a8c093d 100644 --- a/.github/workflows/_reusable-docker-build-single.yaml +++ b/.github/workflows/_reusable-docker-build-single.yaml @@ -81,7 +81,8 @@ jobs: secrets: | GEOIPUPDATE_ACCOUNT_ID=${{ secrets.GEOIPUPDATE_ACCOUNT_ID }} GEOIPUPDATE_LICENSE_KEY=${{ secrets.GEOIPUPDATE_LICENSE_KEY }} - build-args: ${{ fromJson(steps.ev.outputs.imageBuildArgs) }} + build-args: | + ${{ steps.ev.outputs.imageBuildArgs }} tags: ${{ steps.ev.outputs.imageTags }} platforms: linux/${{ inputs.image_arch }} cache-from: type=registry,ref=${{ steps.ev.outputs.attestImageNames }}:buildcache-${{ inputs.image_arch }}