From 33066041101b15d1354b209af1f5a886e264fe52 Mon Sep 17 00:00:00 2001
From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de>
Date: Tue, 11 Feb 2025 14:41:18 +0100
Subject: [PATCH] Avoid unintentionally overwriting 'latest' image tag

---
 .gitlab-ci.yml | 6 ++++++
 pom.xml        | 4 ++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 20b1a982..b05f6d8a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -54,6 +54,7 @@ push-merge-request-image-gitlab:
   stage: publish
   extends: .get-version
   script:
+    - export PRIMARY_IMAGE_TAG=${MERGE_REQUEST_TAG}
     - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${MERGE_REQUEST_TAG},${CI_REGISTRY_IMAGE}:${MERGE_REQUEST_TAG}-${CI_COMMIT_SHORT_SHA}"
     - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
@@ -64,6 +65,7 @@ push-merge-request-image-nexus:
   stage: publish
   extends: .get-version
   script:
+    - export PRIMARY_IMAGE_TAG=${MERGE_REQUEST_TAG}
     - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${MERGE_REQUEST_TAG},${NEXUS_IMAGE_PREFIX}:${MERGE_REQUEST_TAG}-${CI_COMMIT_SHORT_SHA}"
     - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
@@ -75,6 +77,7 @@ push-snapshot-image-gitlab:
   stage: publish
   extends: .get-version
   script:
+    - export PRIMARY_IMAGE_TAG=${SNAPSHOT_TAG}
     - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${SNAPSHOT_TAG},${CI_REGISTRY_IMAGE}:${SNAPSHOT_TAG}-${CI_COMMIT_SHORT_SHA},${CI_REGISTRY_IMAGE}:snapshot-latest"
     - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   only:
@@ -84,6 +87,7 @@ push-snapshot-image-nexus:
   stage: publish
   extends: .get-version
   script:
+    - export PRIMARY_IMAGE_TAG=${SNAPSHOT_TAG}
     - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${SNAPSHOT_TAG},${NEXUS_IMAGE_PREFIX}:${SNAPSHOT_TAG}-${CI_COMMIT_SHORT_SHA},${NEXUS_IMAGE_PREFIX}:snapshot-latest"
     - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   only:
@@ -116,6 +120,7 @@ push-release-image-gitlab:
   extends: .get-version
   script:
     - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS
+    - export PRIMARY_IMAGE_TAG=${CI_REGISTRY_IMAGE}
     - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG},${CI_REGISTRY_IMAGE}:latest"
     - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
@@ -126,6 +131,7 @@ push-release-image-nexus:
   extends: .get-version
   script:
     - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS
+    - export PRIMARY_IMAGE_TAG=${CI_REGISTRY_IMAGE}
     - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${CI_COMMIT_TAG},${NEXUS_IMAGE_PREFIX}:latest"
     - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
diff --git a/pom.xml b/pom.xml
index 91d365cd..33dd3e9c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -246,7 +246,7 @@
 						<artifactId>spring-boot-maven-plugin</artifactId>
 						<configuration>
 							<image>
-								<name>${CI_REGISTRY_IMAGE}/${project.artifactId}</name>
+								<name>${CI_REGISTRY_IMAGE}:${PRIMARY_IMAGE_TAG}</name>
 								<tags>${IMAGE_TAGS}</tags>
 								<publish>true</publish>
 							</image>
@@ -286,7 +286,7 @@
 						<artifactId>spring-boot-maven-plugin</artifactId>
 						<configuration>
 							<image>
-								<name>docker.ozg-sh.de/${project.artifactId}:${project.version}</name>
+								<name>docker.ozg-sh.de/${project.artifactId}:${PRIMARY_IMAGE_TAG}</name>
 								<tags>${IMAGE_TAGS}</tags>
 								<publish>true</publish>
 							</image>
-- 
GitLab