From d651f61c8d8c289e1b9bb682dbd486547f8b596b Mon Sep 17 00:00:00 2001
From: Felix Reichenbach <felix.reichenbach@mgm-tp.com>
Date: Wed, 5 Mar 2025 15:39:39 +0100
Subject: [PATCH] set up gitlab pipeline

---
 .gitlab-ci.yml          | 58 +++++++++++++++++++++++++++++++++++++++++
 gitlab/configure_git.sh |  8 ++++++
 gitlab/prepare.sh       | 12 +++++++++
 3 files changed, 78 insertions(+)
 create mode 100644 .gitlab-ci.yml
 create mode 100755 gitlab/configure_git.sh
 create mode 100755 gitlab/prepare.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..122a31b
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,58 @@
+image: maven:3.9.9-eclipse-temurin-21-alpine
+
+stages:
+  - check_version
+  - build
+  - publish
+  - rollout
+  - post_checks
+  - on_failure
+
+variables:
+  DOCKER_HOST: "tcp://docker:2375"
+  DOCKER_TLS_CERTDIR: ""
+  DOCKER_DRIVER: overlay2
+  DOCKER_REGISTRY: "docker.ozg-sh.de"
+  SERVICE_NAME: "aggregation-manager"
+  DOCKER_REGISTRY_IMAGE: "$DOCKER_REGISTRY/$SERVICE_NAME"
+  PYTHON_VENV_PATH: "/usr/local/bin/python3/venv"
+  SH_SUCCESS_STATUS_CODE: 0
+
+default:
+  before_script:
+    - ./gitlab/prepare.sh
+
+check_version:
+  stage: check_version
+  script:
+    - $SCRIPT_DIR/check_version.sh
+
+build:
+  stage: build
+  services:
+    - name: docker:dind
+      command: ["--tls=false"]
+  script:
+    - run_mvn.sh clean install -Dmaven.wagon.http.retryHandler.count=3 -DelasticTests.disabled=true
+
+deploy:
+  stage: publish
+  script:
+    - jar_version=$(run_mvn.sh help:evaluate -Dexpression=project.version -q -DforceStdout | sed "s/SNAPSHOT/${CI_COMMIT_REF_NAME:0:20}-SNAPSHOT/")
+    - jar_license_version=$(run_mvn.sh help:evaluate -Dexpression=project.version -q -DforceStdout -pl ozgcloud-common-license | sed "s/SNAPSHOT/${CI_COMMIT_REF_NAME:0:20}-SNAPSHOT/")
+    - run_mvn.sh versions:set -DnewVersion=$jar_version -pl .
+    - run_mvn.sh versions:set -DnewVersion=$jar_version -pl ozgcloud-common-parent
+    - run_mvn.sh versions:set -DnewVersion=$jar_license_version -pl ozgcloud-common-license
+    - run_mvn.sh deploy -DskipTests -Dmaven.wagon.http.retryHandler.count=3
+
+deploy_sbom_to_dependency_track:
+  stage: post_checks
+  script:
+    - $SCRIPT_DIR/deploy_sbom_to_dependency_track.sh
+
+sonar_checks:
+  stage: post_checks
+  only:
+    - main
+  script:
+    - run_mvn.sh sonar:sonar -Dsonar.login=$SONARQUBE_TOKEN
diff --git a/gitlab/configure_git.sh b/gitlab/configure_git.sh
new file mode 100755
index 0000000..fe0738a
--- /dev/null
+++ b/gitlab/configure_git.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+## install prerequisites
+apk add --no-cache git
+
+## configure git
+git config --global user.email "ozgcloud@mgm-tp.com"
+git config --global user.name "OZGCloud"
\ No newline at end of file
diff --git a/gitlab/prepare.sh b/gitlab/prepare.sh
new file mode 100755
index 0000000..dd7ab33
--- /dev/null
+++ b/gitlab/prepare.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+service_name="$1"
+. ./gitlab/configure_git.sh
+# git clone --depth 1 https://$service_name:${GIT_ACCESS_TOKEN}@code.schleswig-holstein.de/ozg-cloud/devops/build-management.git ## TODO: use this when MR is merged
+#### TODO: remove code block when MR is merged
+git clone https://$service_name:${GIT_ACCESS_TOKEN}@code.schleswig-holstein.de/ozg-cloud/devops/build-management.git
+cd build-management
+git checkout add-pipeline-scripts
+cd ..
+####
+. ./build-management/set_up_scripts.sh
+. $SCRIPT_DIR/configure_maven.sh
\ No newline at end of file
-- 
GitLab