#image: maven:latest image: maven:3.6.3-jdk-11 variables: LC_ALL: "en_US.UTF-8" LANG: "en_US.UTF-8" LANGUAGE: "en_US" LIB_NAME: "ms_specific" MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version" MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=${CI_PROJECT_DIR}/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true" GIT_DEPTH: "2" SECURE_LOG_LEVEL: "debug" JACOCO_CSV_LOCATION: '${CI_PROJECT_DIR}/build_reporting/target/site/jacoco-aggregate-ut/jacoco.csv' JACOCO_XML_LOCATION: '${CI_PROJECT_DIR}/build_reporting/target/site/jacoco-aggregate-ut/jacoco.xml' PROJECT_RELEASE_PACKAGE: '${CI_PROJECT_DIR}/target/*-dist.zip' include: - template: Dependency-Scanning.gitlab-ci.yml - template: Security/SAST.gitlab-ci.yml - template: Secret-Detection.gitlab-ci.yml ## skip jUnit tests in Test jobs to speed-up build time dependency_scanning: variables: MAVEN_CLI_OPTS: "-DskipTests" DS_JAVA_VERSION: 11 spotbugs-sast: variables: MAVEN_CLI_OPTS: "-DskipTests" SAST_JAVA_VERSION: 11 default: tags: - docker stages: - assemble - test - package - release cache: paths: - ".m2/repository" assemble: stage: assemble except: - tags script: | mkdir ./target mvn $MAVEN_CLI_OPTS --log-file ./target/mvn_build.log generate-sources compile test after_script: - awk -F"," '{ instructions += $4 + $5; covered += $5 } END { print covered, "/", instructions, " instructions covered"; print 100*covered/instructions, "% covered" }' $JACOCO_CSV_LOCATION coverage: '/([0-9]{1,3}.[0-9]*).%.covered/' artifacts: when: always reports: junit: "**/target/surefire-reports/TEST-*.xml" paths: - $JACOCO_CSV_LOCATION - $JACOCO_XML_LOCATION - "**/target/mvn_build.log" buildDistributionPackage: stage: package except: - tags - /^feature/.*$/i script: | export VERSION=$(mvn -B help:evaluate -Dexpression=project.version -B | grep -v "\[INFO\]" | grep -Po "\d+\.\d+\.\d+((-\w*)+)?") echo "Build full package of version $VERSION" mvn $MAVEN_CLI_OPTS verify -DskipTests echo "VERSION=$VERSION" >> variables.env artifacts: name: "${CI_PROJECT_NAME}-${CI_COMMIT_SHORT_SHA}" when: always reports: dotenv: variables.env paths: - $PROJECT_RELEASE_PACKAGE release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest needs: - job: buildDistributionPackage artifacts: true when: manual only: - master script: | echo "Releasing version $VERSION of $LIB_NAME" echo "Publishing version $VERSION to public EGIZ maven" mvn $MAVEN_CLI_OPTS deploy artifacts: name: "${CI_PROJECT_NAME}-${CI_COMMIT_SHORT_SHA}-release" expire_in: never paths: - $PROJECT_RELEASE_PACKAGE