image: docker.io/library/eclipse-temurin:21.0.7_6-jdk-alpine variables: MAVEN_OPTS: >- -Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true MAVEN_CLI_OPTS: >- --batch-mode --errors --fail-at-end --show-version --no-transfer-progress -DinstallAtEnd=true -DdeployAtEnd=true cache: key: ${CI_PROJECT_NAME}-${CI_COMMIT_REF_SLUG} paths: - .m2/repository - .mvn policy: pull-push stages: - compile - test - package - docker-build compile: stage: compile script: - "chmod +x ./mvnw" - "./mvnw $MAVEN_CLI_OPTS compile" rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_BRANCH == "main"' when: always - when: never test: stage: test script: - "chmod +x ./mvnw" - "./mvnw $MAVEN_CLI_OPTS test" artifacts: when: always reports: junit: - "**/target/*-reports/TEST-*.xml" codequality: - "target/gl-code-quality-report.json" rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_BRANCH == "main"' package: stage: package script: - "chmod +x ./mvnw" - "./mvnw $MAVEN_CLI_OPTS package -DskipTests=true" artifacts: name: "Maven artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG" paths: - "**/target" rules: - if: '$CI_COMMIT_TAG' - if: '$CI_COMMIT_BRANCH == "main"' docker-build: stage: docker-build image: quay.io/buildah/stable script: - buildah bud -f Dockerfile -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG . - echo "$CI_REGISTRY_PASSWORD" | buildah login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" - buildah push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG - | if [ "$CI_COMMIT_BRANCH" = "main" ]; then buildah tag $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG $CI_REGISTRY_IMAGE:latest buildah push $CI_REGISTRY_IMAGE:latest fi rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_BRANCH == "main"'