stages: - test - build - release image: maven:3.9.8-eclipse-temurin-21 variables: MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" cache: key: ${CI_COMMIT_REF_SLUG} paths: - .m2/repository test: stage: test script: - mvn -B -ntp test artifacts: when: always reports: junit: - target/surefire-reports/*.xml - target/failsafe-reports/*.xml paths: - target/surefire-reports - target/failsafe-reports rules: - if: $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_TAG build_tag: stage: build script: - mvn -B -ntp -DskipTests package - JAR=$(ls target/*-with-dependencies.jar 2>/dev/null || ls target/*.jar | head -n1) - cp "$JAR" "target/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar" artifacts: paths: - target/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar expire_in: 1 year rules: - if: $CI_COMMIT_TAG release_tag: stage: release needs: ["build_tag"] image: registry.gitlab.com/gitlab-org/release-cli:latest script: - > release-cli create --name "Release ${CI_COMMIT_TAG}" --tag-name "${CI_COMMIT_TAG}" --description "New release : ${CI_COMMIT_TAG} - Commit : ${CI_COMMIT_SHA})." --assets-link "{\"name\":\"${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar\",\"url\":\"${CI_PROJECT_URL}/-/jobs/artifacts/${CI_COMMIT_TAG}/raw/target/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar?job=build_tag\"}" rules: - if: $CI_COMMIT_TAG