image: docker.io/library/eclipse-temurin:25-jdk-alpine@sha256:da683f4f02f9427597d8fa162b73b8222fe08596dcebaf23e4399576ff8b037e 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"' - if: '$CI_COMMIT_BRANCH == "main"' - if: '$CI_COMMIT_TAG' 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"' - if: '$CI_COMMIT_BRANCH == "main"' - if: '$CI_COMMIT_TAG' 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/netneutrality.jar - startup.sh expire_in: 1 week rules: - if: '$CI_COMMIT_BRANCH == "main"' - if: '$CI_COMMIT_TAG' docker-build-main: stage: docker-build image: quay.io/buildah/stable needs: - job: package artifacts: true script: - echo "$CI_REGISTRY_PASSWORD" | buildah login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" - buildah bud -f Dockerfile -t $CI_REGISTRY_IMAGE:main . - buildah push $CI_REGISTRY_IMAGE:main rules: - if: '$CI_COMMIT_BRANCH == "main"' docker-build-release: stage: docker-build image: quay.io/buildah/stable needs: - job: package artifacts: true script: - export RELEASE_VERSION="${CI_COMMIT_TAG#v}" - echo "$CI_REGISTRY_PASSWORD" | buildah login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" - buildah bud -f Dockerfile -t $CI_REGISTRY_IMAGE:$RELEASE_VERSION . - buildah push $CI_REGISTRY_IMAGE:$RELEASE_VERSION - buildah tag $CI_REGISTRY_IMAGE:$RELEASE_VERSION $CI_REGISTRY_IMAGE:latest - buildah push $CI_REGISTRY_IMAGE:latest rules: - if: '$CI_COMMIT_TAG'