From 12ab3cabee91bdb9233ab6c3d89f3e84298020ba Mon Sep 17 00:00:00 2001
From: "Stefan E. Funk" <funk@sub.uni-goettingen.de>
Date: Tue, 19 Apr 2022 13:29:12 +0200
Subject: [PATCH] Add gitlab templates

---
 .gitlab-ci.yml | 78 ++++++++++++++++++--------------------------------
 1 file changed, 28 insertions(+), 50 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ecfc3867..37f4ecee 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,10 @@
+###
+# PREPARATIONS
+###
+
+# Some variables
+# TODO: Apply also as a template!
 variables:
-  # defaults to java 11 (https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#configuring-specific-analyzers-used-by-dependency-scanning)
-  DS_JAVA_VERSION: 8
   # This will suppress any download for dependencies and plugins or upload messages which would clutter the console log.
   # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work.
   MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
@@ -14,30 +18,14 @@ variables:
   # File for storing the POM project.version
   VARIABLES_FILE: ./variables.txt
 
+# Include Java settings from Gitlab templates repo.
 include:
-  - template: Dependency-Scanning.gitlab-ci.yml
-
-###################
-###  TEMPLATES  ###
-###################
-.webapp: &webapp
-  image: alpine:3.14
-  stage: deploy_deb
-  script:
-    - source $VARIABLES_FILE
-    - 'apk add --no-cache bash'
-    - 'apk add --no-cache curl'
-    - export PLOC="$(ls ./${PPATH}/*.deb)"
-    - DEB_NAME=$PNAME-$PVERSION.deb
-    - 'if [[ $PVERSION =~ .*${PKEY}$ ]]; then'
-    - echo "---AN APTLY DEPLOYMENT IS BEING PERFORMED for $DEB_NAME in $PLOC into ${APTLY_TARGET}---"
-    - 'curl -u ${APTLY_USER}:${APTLY_PASSWORD} -X POST --header "Content-Type:multipart/form-data" -F file=@${PLOC} ${APTLY_URL}/files/${DEB_NAME}'
-    - 'curl -u ${APTLY_USER}:${APTLY_PASSWORD} -X POST ${APTLY_URL}/repos/${APTLY_TARGET}/file/${DEB_NAME}'
-    - 'curl -u ${APTLY_USER}:${APTLY_PASSWORD} -X PUT -H "Content-Type: application/json" --data "{}" ${APTLY_URL}/publish/:./indy'
-    - fi
+  - project: 'dariah-de/gitlab-templates'
+    ref: 'main'
+    file: '/templates/.java.gitlab-ci.yml'
 
+# Stages...
 stages:
-  - test
   - build_version
   - deploy_java
   - deploy_deb
@@ -49,25 +37,21 @@ cache:
   paths:
     - .m2/repository
 
+###
+# JOBS
+###
+
 # Get the project version from main POM file and store it to artifact.
-get_version:
-  image: maven:3.8.3-jdk-8
+Get POM version:
   only:
     - develop
     - main
-    - branches
   stage: build_version
-  script:
-    - 'PVERSION=$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.1:evaluate -Dexpression=project.version -q -DforceStdout)'
-    - echo "export PVERSION=$PVERSION" > $VARIABLES_FILE
-    - echo "Project version from main pom file is $PVERSION"
-  artifacts:
-    name: POM_VERSION
-    paths:
-      - $VARIABLES_FILE
+  extends:
+    - .get-pom-version
 
 # Build and deploy all the JARs to GWDG Nexus, and build all the DEBs and store DEBs to artifacts.
-build_and_deploy:
+Build and Deploy JARs:
   image: maven:3.8.3-jdk-8
   only:
     - develop
@@ -80,17 +64,9 @@ build_and_deploy:
     paths:
       - ./oaipmh-webapp/target/*.deb
 
-# Just build any branch and test. NO JAR, NO DEB deployed hrer!
-#build_and_deploy:
-#  image: maven:3.8.3-jdk-8
-#  only:
-#    - branches
-#  stage: deploy_java
-#  script:
-#    - 'mvn $MAVEN_OPTS $MAVEN_CLI_OPTS $MAVEN_DEPLOY_OPTS -U clean verify'
-
-# Deploy SNAPSHOT DEB file to APTLY repository.
-deploy_oaipmh-webapp_dev:
+# Deploy DEB files to APTLY repository.
+Deploy develop DEBs:
+  stage: deploy_deb
   only:
     - develop
   variables:
@@ -98,10 +74,11 @@ deploy_oaipmh-webapp_dev:
     PPATH: '${PNAME}/target'
     PKEY: 'SNAPSHOT'
     APTLY_TARGET: 'indy-snapshots'
-  <<: *webapp
+  extends:
+    - .deploy-deb
 
-# Deploy RELEASE DEB file to APTLY repository.
-deploy_oaipmh-webapp_prd:
+Deploy productive DEBs:
+  stage: deploy_deb
   only:
     - main
   variables:
@@ -109,4 +86,5 @@ deploy_oaipmh-webapp_prd:
     PPATH: '${PNAME}/target'
     PKEY: '${PVERSION}'
     APTLY_TARGET: 'indy-releases'
-  <<: *webapp
+  extends:
+    - .deploy-deb
-- 
GitLab