From 90f0563cb7ad3592495fcf9befa184b9b0195a3e Mon Sep 17 00:00:00 2001
From: e7d <michael@e7d.io>
Date: Thu, 28 Mar 2024 16:01:43 +0100
Subject: [PATCH] feat(): handle major and minor Docker images publishing

---
 .github/workflows/docker-image.yml | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml
index 96aa912..7825dda 100644
--- a/.github/workflows/docker-image.yml
+++ b/.github/workflows/docker-image.yml
@@ -34,15 +34,19 @@ jobs:
           cache-to: type=registry,ref=${{ vars.DOCKERHUB_IMAGE }}:buildcache,mode=max
           push: true
           tags: ${{ vars.DOCKERHUB_IMAGE }}:${{ github.sha }}
-      - name: Push "tag"
+      - name: Push semver tags
         if: github.ref_type == 'tag'
         run: |
           GITHUB_REF=${{ github.ref }}
-          TAG=${GITHUB_REF#refs/tags/}
-          docker buildx imagetools create \
-            --tag ${{ vars.DOCKERHUB_IMAGE }}:${TAG} \
-            ${{ vars.DOCKERHUB_IMAGE }}:${{ github.sha }}
-      - name: Push "latest"
+          GITHUB_TAG=${GITHUB_REF#refs/tags/}
+          TAGS=""
+          if [ "${GITHUB_TAG}" != *-* ]; then # if not a pre-release
+            TAGS+=" --tag ${{ vars.DOCKERHUB_IMAGE }}:${GITHUB_TAG%%.*}" # major version tag (e.g. 1)
+            TAGS+=" --tag ${{ vars.DOCKERHUB_IMAGE }}:${GITHUB_TAG%.*}" # major.minor version tag (e.g. 1.2)
+          fi
+          TAGS+=" --tag ${{ vars.DOCKERHUB_IMAGE }}:${GITHUB_TAG}" # full version tag (e.g. 1.2.3-rc.4)
+          docker buildx imagetools create ${TAGS} ${{ vars.DOCKERHUB_IMAGE }}:${{ github.sha }}
+      - name: Push "latest" tag
         if: github.ref == 'refs/heads/main'
         run: |
           docker buildx imagetools create \