diff --git a/.github/workflows/build-fd-image.yaml b/.github/workflows/build-fd-image.yaml index 3fdf379fa..0df2c5bd0 100644 --- a/.github/workflows/build-fd-image.yaml +++ b/.github/workflows/build-fd-image.yaml @@ -407,20 +407,40 @@ jobs: VERSION_WITHOUT_V=${VERSION#v} MAJOR_MINOR=$(echo $VERSION_WITHOUT_V | cut -d. -f1-2) + echo "VERSION=$VERSION" >> $GITHUB_ENV echo "VERSION_WITHOUT_V=$VERSION_WITHOUT_V" >> $GITHUB_ENV echo "MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_ENV + - name: Determine image version tag + id: determine-tags + run: | + if skopeo inspect docker://ghcr.io/${{ env.GITHUB_IMAGE }}:${{ env.VERSION }}; then + echo "${{ env.VERSION }} tag already exists, assuming we're building a patch release!" + LATEST_PATCH_VERSION=$(skopeo list-tags docker://ghcr.io/${{ env.GITHUB_IMAGE }} | grep -E "${{ env.VERSION }}-[0-9]+" | sort | uniq | tail -1 | tr -d \" | cut -d'-' -f2) + NEW_PATCH_VERSION=$((LATEST_PATCH_VERSION + 1)) + IMAGE_TAG="${{ env.VERSION }}-${NEW_PATCH_VERSION}" + echo "Building patch release ${IMAGE_TAG}!" + else + echo "${{ env.VERSION }} tag does not exist, assuming we're building a new release!" + IMAGE_TAG="${{ env.VERSION }}" + fi + + echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV + env: + VERSION: ${{ env.VERSION }} + - name: docker metadata for manifest id: image-metadata uses: docker/metadata-action@v5 with: images: "ghcr.io/${{ env.GITHUB_IMAGE }}" tags: | - type=raw,value=${{ github.event.inputs.docker_tag_version }} - type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.IMAGE_TAG }} + type=raw,value=v${{ env.IMAGE_TAG }} type=raw,value=${{ env.MAJOR_MINOR }} type=raw,value=v${{ env.MAJOR_MINOR }} env: + IMAGE_TAG: ${{ env.IMAGE_TAG }} MAJOR_MINOR: ${{ env.MAJOR_MINOR }} - name: docker tags for cloning @@ -428,11 +448,12 @@ jobs: uses: docker/metadata-action@v5 with: tags: | - type=raw,value=${{ github.event.inputs.docker_tag_version }} - type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.IMAGE_TAG }} + type=raw,value=v${{ env.IMAGE_TAG }} type=raw,value=${{ env.MAJOR_MINOR }} type=raw,value=v${{ env.MAJOR_MINOR }} env: + IMAGE_TAG: ${{ env.IMAGE_TAG }} MAJOR_MINOR: ${{ env.MAJOR_MINOR }} - name: Set outputs