diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b7e24209df4473d06484036f4062d35fe3d0f347..967ea3637fd8556a7b3473c3aa288d1e8f682527 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -40,32 +40,67 @@ verify: script: - mvn verify $MAVEN_CLI_OPTS +.get-version: + before_script: + - export PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout $MAVEN_CLI_OPTS) + - export PROJECT_ARTIFACTID=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout $MAVEN_CLI_OPTS) + - export NEXUS_IMAGE_PREFIX="docker.ozg-sh.de/${PROJECT_ARTIFACTID}" + +# Merge request jobs +push-merge-request-image-gitlab: + stage: publish + extends: .get-version + script: + - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:MR-${CI_MERGE_REQUEST_IID}-${PROJECT_VERSION}" + - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + +push-merge-request-image-nexus: + stage: publish + extends: .get-version + script: + - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:MR-${CI_MERGE_REQUEST_IID}-${PROJECT_VERSION}" + - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + +# Snapshot jobs push-snapshot-image-gitlab: stage: publish + extends: .get-version script: + - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:main-${PROJECT_VERSION},${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 IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:main-${PROJECT_VERSION},${NEXUS_IMAGE_PREFIX}:snapshot-latest" - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS only: - main +# Release jobs push-release-image-gitlab: stage: publish + extends: .get-version script: - - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} + - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS + - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:release-${CI_COMMIT_TAG},${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} - - mvn mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS + - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS + - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:release-${CI_COMMIT_TAG},${NEXUS_IMAGE_PREFIX}:latest" + - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS rules: - if: $CI_COMMIT_TAG diff --git a/pom.xml b/pom.xml index 2b90d9c8c11578a0164be08cf9b88d1e09132eb9..9a37ccd2af2a042da6e77019458b51e80eca7e10 100644 --- a/pom.xml +++ b/pom.xml @@ -239,6 +239,28 @@ <url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url> </snapshotRepository> </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <image> + <name>${CI_REGISTRY_IMAGE}/${project.artifactId}</name> + <tags>${IMAGE_TAGS}</tags> + <publish>true</publish> + </image> + <docker> + <publishRegistry> + <url>code.schleswig-holstein.de</url> + <username>${CI_REGISTRY_USER}</username> + <password>${CI_REGISTRY_PASSWORD}</password> + </publishRegistry> + </docker> + </configuration> + </plugin> + </plugins> + </build> </profile> <profile> <id>nexus-deploy</id> @@ -257,6 +279,28 @@ <url>https://nexus.ozg-sh.de/repository/ozg-snapshots/</url> </snapshotRepository> </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <image> + <name>docker.ozg-sh.de/${project.artifactId}</name> + <tags>${IMAGE_TAGS}</tags> + <publish>true</publish> + </image> + <docker> + <publishRegistry> + <url>docker.ozg-sh.de</url> + <username>${NEXUS_USER}</username> + <password>${NEXUS_PASSWORD}</password> + </publishRegistry> + </docker> + </configuration> + </plugin> + </plugins> + </build> </profile> </profiles> </project>