-
Notifications
You must be signed in to change notification settings - Fork 1
/
.gitlab-ci.yml
155 lines (136 loc) · 3.67 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
154
155
image: openjdk:11-jdk
# Disable the Gradle daemon for Continuous Integration servers as correctness
# is usually a priority over speed in CI environments. Using a fresh
# runtime for each build is more reliable since the runtime is completely
# isolated from any previous builds.
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
cache:
paths:
- .gradle
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
stages:
- build
- test
- check
- deploy
build:
stage: build
tags:
- exec-docker
script: ./gradlew --build-cache assemble
artifacts:
paths:
- "uc1-application/build/libs/uc1-application-all.jar"
- "uc1-workload-generator/build/distributions/uc1-workload-generator.tar"
- "uc2-application/build/libs/uc2-application-all.jar"
- "uc2-workload-generator/build/distributions/uc2-workload-generator.tar"
- "uc3-application/build/libs/uc3-application-all.jar"
- "uc3-workload-generator/build/distributions/uc3-workload-generator.tar"
- "uc4-application/build/libs/uc4-application-all.jar"
- "uc4-workload-generator/build/distributions/uc4-workload-generator.tar"
expire_in: 1 day
.test:
stage: test
tags:
- exec-docker
script: ./gradlew test --continue
artifacts:
reports:
junit:
- "**/build/test-results/test/TEST-*.xml"
.checkstyle:
stage: check
tags:
- exec-docker
script: ./gradlew checkstyle --continue
allow_failure: true
artifacts:
paths:
- "*/build/reports/checkstyle/main.html"
when: on_failure
expire_in: 1 day
.pmd:
stage: check
tags:
- exec-docker
script: ./gradlew pmd --continue
allow_failure: true
artifacts:
paths:
- "*/build/reports/pmd/*.html"
when: on_failure
expire_in: 1 day
.spotbugs:
stage: check
tags:
- exec-docker
script: ./gradlew spotbugs --continue
allow_failure: true
artifacts:
paths:
- "*/build/reports/spotbugs/*.html"
when: on_failure
expire_in: 1 day
.deploy:
stage: deploy
tags:
- exec-dind
# see https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
# for image usage and settings for building with TLS and docker in docker
image: docker:19.03.1
services:
- docker:19.03.1-dind
cache: {}
variables:
DOCKER_TLS_CERTDIR: "/certs"
script:
- docker build --pull -t $DOCKERHUB_ID/$IMAGE_NAME:latest ./$JAVA_PROJECT_NAME
- echo $DOCKERHUB_PW | docker login -u $DOCKERHUB_ID --password-stdin
- docker push $DOCKERHUB_ID/$IMAGE_NAME:latest
- docker logout
only:
variables:
- $DOCKERHUB_ID
- $DOCKERHUB_PW
deploy-uc1-flink-app:
extends: .deploy
variables:
IMAGE_NAME: "theodolite-flink-uc1"
JAVA_PROJECT_NAME: "uc1-application"
deploy-uc2-flink-app:
extends: .deploy
variables:
IMAGE_NAME: "theodolite-flink-uc2"
JAVA_PROJECT_NAME: "uc2-application"
deploy-uc3-flink-app:
extends: .deploy
variables:
IMAGE_NAME: "theodolite-flink-uc3"
JAVA_PROJECT_NAME: "uc3-application"
deploy-uc4-flink-app:
extends: .deploy
variables:
IMAGE_NAME: "theodolite-flink-uc4"
JAVA_PROJECT_NAME: "uc4-application"
deploy-uc1-flink-wg:
extends: .deploy
variables:
IMAGE_NAME: "theodolite-flink-uc1-wg"
JAVA_PROJECT_NAME: "uc1-workload-generator"
deploy-uc2-flink-wg:
extends: .deploy
variables:
IMAGE_NAME: "theodolite-flink-uc2-wg"
JAVA_PROJECT_NAME: "uc2-workload-generator"
deploy-uc3-flink-wg:
extends: .deploy
variables:
IMAGE_NAME: "theodolite-flink-uc3-wg"
JAVA_PROJECT_NAME: "uc3-workload-generator"
deploy-uc4-flink-wg:
extends: .deploy
variables:
IMAGE_NAME: "theodolite-flink-uc4-wg"
JAVA_PROJECT_NAME: "uc4-workload-generator"