-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
153 lines (139 loc) · 5.1 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
default:
tags:
- exec-docker
image: ghcr.io/graalvm/graalvm-community:21
cache: # Cache modules in between jobs
key: $CI_COMMIT_REF_SLUG
paths:
- .gradle
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: "$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS"
when: never
- if: "$CI_COMMIT_BRANCH"
stages:
- code-analysis
- test
- coverage
- visualize
- build
- publish
detekt:
stage: code-analysis
script: ./gradlew detekt
spotless:
stage: code-analysis
script: ./gradlew spotlessCheck
test:
stage: test
needs: []
script:
- ./gradlew jacocoTestReport
# Print test coverage to console (for coverage badge)
- cat build/reports/jacoco/test/html/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'
coverage: "/Jacoco Coverage Total: ([0-9]{1,3})%/"
artifacts:
when: always
reports:
junit: build/test-results/test/**/TEST-*.xml
paths:
- build/reports/jacoco/test/jacocoTestReport.xml
coverage:
stage: visualize
needs: [test]
image: registry.gitlab.com/haynes/jacoco2cobertura:1.0.7
script:
# convert report from jacoco to cobertura
- "python /opt/cover2cover.py build/reports/jacoco/test/jacocoTestReport.xml src/main/java > build/cobertura.xml"
# read the <source></source> tag and prepend the path to every filename attribute
- "python /opt/source2filename.py build/cobertura.xml"
dependencies:
- test
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: build/cobertura.xml
build:
stage: build
needs: []
script: ./gradlew --build-cache assemble
cache:
policy: push
paths:
- .gradle
artifacts:
paths:
- build
expire_in: 1 week
.push-dockerhub-native-base-job:
stage: publish
image: explorviz/ubi-quarkus-mandrel-builder-image
rules:
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
script:
- ./gradlew clean assemble
-Dquarkus.package.type=native
-Dquarkus.container-image.push=true
-Dquarkus.container-image.name=${DOCKERHUB_IMAGE_NAME_NATIVE}
-Dquarkus.container-image.additional-tags=$CI_COMMIT_SHORT_SHA
-Dquarkus.native.additional-build-args="--initialize-at-run-time=org.apache.kafka.common.security.authenticator.SaslClientAuthenticator\\,org.apache.kafka.common.security.oauthbearer.internals.expiring.ExpiringCredentialRefreshingLogin"
-Dquarkus.container-image.username=$DOCKERHUB_USERNAME
-Dquarkus.container-image.password=$DOCKERHUB_PASSWORD
after_script:
- echo "Image was uploaded to Dockerhub; explorviz/${DOCKERHUB_IMAGE_NAME_NATIVE}:latest and explorviz/${DOCKERHUB_IMAGE_NAME_NATIVE}:$CI_COMMIT_SHORT_SHA"
push-dockerhub-native-main:
extends: .push-dockerhub-native-base-job
needs: [detekt, spotless, test, build]
push-dockerhub-native-mr:
stage: publish
needs: [detekt, spotless, test, build]
image: explorviz/ubi-quarkus-mandrel-builder-image
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
script:
- ./gradlew clean assemble
-Dquarkus.package.type=native
-Dquarkus.container-image.push=true
-Dquarkus.container-image.name=${DOCKERHUB_IMAGE_NAME_NATIVE}
-Dquarkus.container-image.tag=mr-$CI_MERGE_REQUEST_IID
-Dquarkus.native.additional-build-args="--initialize-at-run-time=org.apache.kafka.common.security.authenticator.SaslClientAuthenticator\\,org.apache.kafka.common.security.oauthbearer.internals.expiring.ExpiringCredentialRefreshingLogin"
-Dquarkus.container-image.username=$DOCKERHUB_USERNAME
-Dquarkus.container-image.password=$DOCKERHUB_PASSWORD
after_script:
- echo "Image was uploaded to Dockerhub; explorviz/user-service-native:mr-$CI_MERGE_REQUEST_IID"
.push-dockerhub-base-job:
stage: publish
needs: [detekt, spotless, test, build]
rules:
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
script:
- ./gradlew clean assemble
-Dquarkus.container-image.build=true
-Dquarkus.container-image.push=true
-Dquarkus.container-image.additional-tags=$CI_COMMIT_SHORT_SHA
-Dquarkus.container-image.username=$DOCKERHUB_USERNAME
-Dquarkus.container-image.password=$DOCKERHUB_PASSWORD
after_script:
- echo "Image was uploaded to Dockerhub; explorviz/${DOCKERHUB_IMAGE_NAME}:latest and explorviz/${DOCKERHUB_IMAGE_NAME}:$CI_COMMIT_SHORT_SHA"
push-dockerhub-main:
extends: .push-dockerhub-base-job
needs: [detekt, spotless, test, build]
push-dockerhub-mr:
stage: publish
needs: [detekt, spotless, test, build]
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
script:
- ./gradlew clean assemble
-Dquarkus.container-image.build=true
-Dquarkus.container-image.push=true
-Dquarkus.container-image.tag=mr-$CI_MERGE_REQUEST_IID -Dquarkus.container-image.username=$DOCKERHUB_USERNAME
-Dquarkus.container-image.password=$DOCKERHUB_PASSWORD
after_script:
- echo "Image was uploaded to Dockerhub; explorviz/${DOCKERHUB_IMAGE_NAME}:mr-$CI_MERGE_REQUEST_IID"