diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1b03623e38ee8b71b789f7ad8a97c2572bae416f..c960f0f0119c294b0a1969e81f7ec39eaed719b4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,39 +1,50 @@ image: maven:3.9.9-eclipse-temurin-21-alpine variables: - 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 + NEXUS_IMAGE_REGISTRY_URL: docker.ozg-sh.de services: - docker:24.0.5-dind -cache: - paths: - - .m2/repository/ - - target/ - stages: - build - test - publish -package: - stage: build - script: - - mvn clean package -DskipTests=true $MAVEN_CLI_OPTS - artifacts: - paths: - - target/*.jar - -test: - stage: test - script: - - mvn test $MAVEN_CLI_OPTS +include: + # Maven Build, Test and Verify + - component: $CI_SERVER_FQDN/ozg-cloud/devops/ci-components/maven_build@main + inputs: + maven_cli_options: $MAVEN_CLI_OPTS + build_stage: build + test_stage: test + # Maven Deploy for MR, Snapshot and Release to GitLab + - component: $CI_SERVER_FQDN/ozg-cloud/devops/ci-components/maven_deploy@main + inputs: + job_prefix: gitlab + stage: publish + maven_cli_options: >- + -s .m2/ci_settings.xml --batch-mode + -Dmaven.plugin.validation=brief + maven_profile: "-Pgitlab-deploy" + image_registry: $CI_REGISTRY_IMAGE + # Maven Deploy for MR, Snapshot and Release to Nexus + - component: $CI_SERVER_FQDN/ozg-cloud/devops/ci-components/maven_deploy@main + inputs: + job_prefix: nexus + stage: publish + maven_cli_options: >- + -s .m2/ci_settings.xml --batch-mode + -Dmaven.plugin.validation=brief + maven_profile: "-Pnexus-deploy" + image_registry: $NEXUS_IMAGE_REGISTRY_URL + append_artifact_id_to_registry: true .helm: before_script: @@ -50,42 +61,11 @@ test-helm: script: - sh run_helm_test.sh -verify: - stage: test - script: - - mvn verify $MAVEN_CLI_OPTS - .get-version: before_script: - export PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout $MAVEN_CLI_OPTS | cut -d'-' -f1) - - export PROJECT_ARTIFACTID=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout $MAVEN_CLI_OPTS) - - export NEXUS_IMAGE_PREFIX="docker.ozg-sh.de/${PROJECT_ARTIFACTID}" - - export MERGE_REQUEST_TAG="${PROJECT_VERSION}-MR-${CI_MERGE_REQUEST_IID}" - - export SNAPSHOT_TAG="${PROJECT_VERSION}-${CI_COMMIT_BRANCH}" # Merge request jobs -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: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - when: manual - -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: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - when: manual - push-merge-request-helm-nexus: stage: publish variables: @@ -118,26 +98,6 @@ push-keystore-assembler-image-nexus: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # Snapshot jobs -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: - - main - -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: - - main - push-snapshot-helm-nexus: stage: publish variables: @@ -157,28 +117,6 @@ push-snapshot-helm-nexus: - "*.tgz" # Release jobs -push-release-image-gitlab: - stage: publish - extends: .get-version - script: - - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS - - export PRIMARY_IMAGE_TAG=${CI_COMMIT_TAG} - - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG},${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}-release,${CI_REGISTRY_IMAGE}:latest" - - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS - rules: - - if: $CI_COMMIT_TAG - -push-release-image-nexus: - stage: publish - extends: .get-version - script: - - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS - - export PRIMARY_IMAGE_TAG=${CI_COMMIT_TAG} - - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${CI_COMMIT_TAG},${NEXUS_IMAGE_PREFIX}:${CI_COMMIT_TAG}-release,${NEXUS_IMAGE_PREFIX}:latest" - - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS - rules: - - if: $CI_COMMIT_TAG - push-release-helm-nexus: stage: publish variables: