From 60621911c2881e676d02784de7f3fba5c20a3143 Mon Sep 17 00:00:00 2001 From: Mikolaj Stempniewicz Date: Fri, 6 Feb 2026 11:24:04 +0100 Subject: [PATCH 1/2] ENG-1159 - stop tagging non-latest images as latest --- .github/workflows/publish-containers.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.github/workflows/publish-containers.yml b/.github/workflows/publish-containers.yml index a57748cfa4c..80fcaa3476d 100644 --- a/.github/workflows/publish-containers.yml +++ b/.github/workflows/publish-containers.yml @@ -30,16 +30,40 @@ jobs: - name: Checkout uses: actions/checkout@v6 + - name: Check if tag should be tagged as "latest" + id: check-latest + env: + GH_TOKEN: ${{ github.token }} + CURRENT_TAG: ${{ github.ref_name }} + run: | + set -u + + HIGHEST=$( gh release list -L 100 --json tagName -q '.[].tagName' \ + | grep -E '^[0-9]+\.[0-9]+' \ + | sort -Vr \ + | head -1) + + echo "Current: $CURRENT_TAG, Highest: $HIGHEST" + + if [[ "$CURRENT_TAG" == "$HIGHEST" ]]; then + echo "is_latest=true" >> $GITHUB_OUTPUT + else + echo "is_latest=false" >> $GITHUB_OUTPUT + fi + - name: Docker metadata id: metadata uses: docker/metadata-action@v5 with: images: | ghcr.io/${{ steps.get-image-name.outputs.image_name }} + flavor: | + latest=false tags: | type=ref,event=branch type=pep440,pattern={{version}} type=pep440,pattern={{major}}.{{minor}} + type=raw,value=latest,enable=${{ steps.check-latest.outputs.is_latest }} context: git build-push: From e5ebf2e23356fe66a998fd62ddd7a867ecbdd23c Mon Sep 17 00:00:00 2001 From: Mikolaj Stempniewicz Date: Fri, 6 Feb 2026 12:28:48 +0100 Subject: [PATCH 2/2] simplify --- .github/workflows/publish-containers.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish-containers.yml b/.github/workflows/publish-containers.yml index 80fcaa3476d..f1d0fa97554 100644 --- a/.github/workflows/publish-containers.yml +++ b/.github/workflows/publish-containers.yml @@ -38,12 +38,10 @@ jobs: run: | set -u - HIGHEST=$( gh release list -L 100 --json tagName -q '.[].tagName' \ - | grep -E '^[0-9]+\.[0-9]+' \ - | sort -Vr \ - | head -1) + CURRENT_LATEST=$(gh api "/repos/${GITHUB_REPOSITORY}/releases/latest" --jq .tag_name) + HIGHEST=$( (echo "$CURRENT_LATEST"; echo "$CURRENT_TAG") | sort -V | tail -1) - echo "Current: $CURRENT_TAG, Highest: $HIGHEST" + echo "Selected: $CURRENT_TAG, Latest: $CURRENT_LATEST" if [[ "$CURRENT_TAG" == "$HIGHEST" ]]; then echo "is_latest=true" >> $GITHUB_OUTPUT