-
Notifications
You must be signed in to change notification settings - Fork 1
/
.gitlab-ci.yml
79 lines (68 loc) · 2.63 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
variables:
# This will suppress any download for dependencies and plugins or upload messages which would clutter the console log.
# `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work.
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"
# As of Maven 3.3.0 instead of this you may define these options in `.mvn/maven.config` so the same config is used
# when running from the command line.
# `installAtEnd` and `deployAtEnd` are only effective with recent version of the corresponding plugins.
MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
LM_JAVA_VERSION: 11
SAST_JAVA_VERSION: 11
stages:
- build
- test
- visualize
- deploy
include:
- template: Dependency-Scanning.gitlab-ci.yml
- template: Secret-Detection.gitlab-ci.yml
- template: SAST.gitlab-ci.yml
.build:
stage: test
# Cache downloaded dependencies and plugins between builds.
cache:
paths:
- .m2/repository
script:
- 'mvn $MAVEN_CLI_OPTS clean org.jacoco:jacoco-maven-plugin:prepare-agent test jacoco:report'
- 'cd target/site/jacoco/'
- awk -F"," '{ instructions += $4 + $5; covered += $5 } END { print covered, "/", instructions, " instructions covered"; print 100*covered/instructions, "% covered" }' jacoco.csv
coverage: /\d+.\d+ % covered/
artifacts:
reports:
coverage_report:
coverage_format: jacoco
path: target/site/jacoco/jacoco.xml
junit:
- $CI_PROJECT_DIR/target/surefire-reports/TEST-*.xml
# Build and Test using JDK8
test:jdk8:
extends: .build
image: maven:3.9.6-eclipse-temurin-8
# Build and Test using JDK11
test:jdk11:
extends: .build
image: maven:3.9.6-eclipse-temurin-11
# Build and Test using JDK17
test:jdk17:
extends: .build
image: maven:3.9.6-eclipse-temurin-17
# Build and Test using JDK21
test:jdk21:
extends: .build
image: maven:3.9.6-eclipse-temurin-21
deploy:snapshot:
stage: deploy
image: maven:3.9.6-eclipse-temurin-8
script:
- 'mvn $MAVEN_CLI_OPTS clean deploy -s ci_mavensettings.xml -Prelease -DskipTests'
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
deploy:release:
stage: deploy
image: maven:3.9.6-eclipse-temurin-8
script:
- 'mvn versions:set -DgenerateBackupPoms=false -DnewVersion=$CI_COMMIT_REF_NAME'
- 'mvn $MAVEN_CLI_OPTS clean deploy -s ci_mavensettings.xml -Prelease -DskipTests'
rules:
- if: $CI_COMMIT_TAG