From 3d2910314c4f53ad339ae7c5c9f2232f90739ff9 Mon Sep 17 00:00:00 2001
From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de>
Date: Wed, 19 Feb 2025 15:49:18 +0100
Subject: [PATCH] KOP-2907 Code-SH CI Pipeline

---
 .gitlab-ci.yml                                | 65 +++++++++++------
 .m2/settings.xml                              | 72 ++++++++-----------
 pom.xml                                       | 15 ++--
 .../xta/client/model/XtaMessageMetaData.java  |  3 +
 4 files changed, 83 insertions(+), 72 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b8463db..edbc971 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,48 +1,71 @@
-image: dimage-base-release.repo-ex.zcdi.dataport.de/sdks/maven:3.9.2-java-21
+image: maven:3.9.9-eclipse-temurin-21-alpine
 
 variables:
-  MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
-  MAVEN_DEPLOY_CLI_OPTS: "--no-transfer-progress"
-  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
+  MAVEN_DEPLOY_CLI_OPTS: "--no-transfer-progress -DskipTests"
+  MAVEN_CLI_OPTS: >-
+    -s .m2/ci_settings.xml --batch-mode
+    -Dmaven.plugin.validation=brief
   DOCKER_HOST: tcp://docker:2375
   DOCKER_TLS_CERTDIR: ""
   DOCKER_DRIVER: overlay2
 
 services:
-  - name: kopsh-docker-dockerhub.repo-ex.zcdi.dataport.de/docker:dind
-    alias: docker
+  - docker:dind
 
 cache:
   paths:
     - .m2/repository/
     - target/
 
+stages:
+  - build
+  - test
+  - publish
 
-package:
+build:
   stage: build
   script:
-    - export DATAPORT_PROXY_CLI=$DATAPORT_PROXY
-    - mvn $MAVEN_CLI_OPTS package
+    - mvn clean compile $MAVEN_CLI_OPTS
   artifacts:
     paths:
       - target/*.jar
-  rules:
-    - if: $CI_COMMIT_BRANCH != "main"
 
-deploy_to_artifactory:
-  stage: deploy
+test:
+  stage: test
+  script:
+    - mvn test $MAVEN_CLI_OPTS
+
+verify:
+  stage: test
   script:
-    - export DATAPORT_PROXY_CLI=$DATAPORT_PROXY
-    - mvn -P artifactory-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS deploy
+    - mvn verify $MAVEN_CLI_OPTS
+
+snapshot-gitlab:
+  stage: publish
+  script:
+    - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   only:
     - main
-    - release
 
-deploy_to_nexus:
-  stage: deploy
+snapshot-nexus:
+  stage: publish
   script:
-    - export DATAPORT_PROXY_CLI=$DATAPORT_PROXY
-    - mvn -P nexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS deploy
+    - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   only:
     - main
-    - release
+
+release-gitlab:
+  stage: publish
+  script:
+    - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS
+    - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
+  rules:
+    - if: $CI_COMMIT_TAG
+
+release-nexus:
+  stage: publish
+  script:
+    - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS
+    - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
+  rules:
+    - if: $CI_COMMIT_TAG
diff --git a/.m2/settings.xml b/.m2/settings.xml
index 74f8b08..06b0cb5 100644
--- a/.m2/settings.xml
+++ b/.m2/settings.xml
@@ -1,32 +1,42 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd"
+          xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <localRepository>.m2/repository</localRepository>
+
     <servers>
-        <server>
-            <id>artifactory</id>
-            <username>${env.Artifactory_REPO_USER}</username>
-            <password>${env.Artifactory_REPO_PASS}</password>
-        </server>
-        <server>
-            <id>artifactory-snapshots</id>
-            <username>${env.Artifactory_REPO_USER}</username>
-            <password>${env.Artifactory_REPO_PASS}</password>
-        </server>
         <server>
             <id>ozg-nexus</id>
-            <username>${env.Nexus_REPO_USER}</username>
-            <password>${env.Nexus_REPO_PASS}</password>
+            <username>${env.NEXUS_USER}</username>
+            <password>${env.NEXUS_PASSWORD}</password>
         </server>
         <server>
             <id>ozg-snapshots-nexus</id>
-            <username>${env.Nexus_REPO_USER}</username>
-            <password>${env.Nexus_REPO_PASS}</password>
+            <username>${env.NEXUS_USER}</username>
+            <password>${env.NEXUS_PASSWORD}</password>
+        </server>
+        <server>
+            <id>codesh-gitlab-maven</id>
+            <configuration>
+                <httpHeaders>
+                    <property>
+                        <name>Job-Token</name>
+                        <value>${CI_JOB_TOKEN}</value>
+                    </property>
+                </httpHeaders>
+            </configuration>
         </server>
     </servers>
     <profiles>
         <profile>
-            <id>local-build</id>
+            <id>ci-default</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
             <repositories>
+                <repository>
+                    <id>codesh-gitlab-maven</id>
+                    <url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url>
+                </repository>
                 <repository>
                     <id>ozg-nexus</id>
                     <name>ozg-releases</name>
@@ -36,33 +46,11 @@
                     <id>ozg-snapshots-nexus</id>
                     <name>ozg-snapshots</name>
                     <url>https://nexus.ozg-sh.de/repository/ozg-snapshots/</url>
-                    <snapshots><enabled>true</enabled></snapshots>
-                </repository>
-                <repository>
-                    <id>artifactory</id>
-                    <name>artifactory</name>
-                    <url>${env.DATAPORT_ARTIFACTORY_URL}</url>
-                </repository>
-                <repository>
-                    <id>artifactory-snapshots</id>
-                    <name>artifactory-snapshots</name>
-                    <url>${env.DATAPORT_ARTIFACTORY_URL}</url>
-                    <snapshots><enabled>true</enabled></snapshots>
+                    <snapshots>
+                        <enabled>true</enabled>
+                    </snapshots>
                 </repository>
             </repositories>
         </profile>
     </profiles>
-    <activeProfiles>
-        <activeProfile>local-build</activeProfile>
-    </activeProfiles>
-    <proxies>
-        <proxy>
-            <id>dataport-proxy</id>
-            <active>true</active>
-            <protocol>http</protocol>
-            <host>${env.DATAPORT_PROXY_CLI}</host>
-            <port>${env.DATAPORT_PROXY_PORT}</port>
-            <nonProxyHosts>localhost,127.0.0.1,*.dataport.de</nonProxyHosts>
-        </proxy>
-    </proxies>
-</settings>
\ No newline at end of file
+</settings>
diff --git a/pom.xml b/pom.xml
index 4d9a9fe..42a5fda 100644
--- a/pom.xml
+++ b/pom.xml
@@ -327,20 +327,18 @@
 	<profiles>
 		<!-- Deployment Profiles -->
 		<profile>
-			<id>artifactory-deploy</id>
+			<id>gitlab-deploy</id>
 			<activation>
 				<activeByDefault>false</activeByDefault>
 			</activation>
 			<distributionManagement>
 				<repository>
-					<id>artifactory</id>
-					<name>artifactory</name>
-					<url>${env.DATAPORT_ARTIFACTORY_URL}</url>
+					<id>codesh-gitlab-maven</id>
+					<url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url>
 				</repository>
 				<snapshotRepository>
-					<id>artifactory-snapshots</id>
-					<name>artifactory-snapshots</name>
-					<url>${env.DATAPORT_ARTIFACTORY_URL}</url>
+					<id>codesh-gitlab-maven</id>
+					<url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url>
 				</snapshotRepository>
 			</distributionManagement>
 		</profile>
@@ -364,5 +362,4 @@
 		</profile>
 	</profiles>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java b/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java
index a9b8332..9e065b0 100644
--- a/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java
+++ b/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java
@@ -40,5 +40,8 @@ public record XtaMessageMetaData(
 		@NotNull @Valid XtaIdentifier authorIdentifier,
 		@NotNull @Valid XtaIdentifier readerIdentifier,
 		@Nullable @PositiveOrZero BigInteger messageSize
+		// TODO
+		// DeliveryAttributes.origin
+		// @Nullable ZonedDateTime deliveryAttributesOrigin;
 ) {
 }
-- 
GitLab