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