-
Notifications
You must be signed in to change notification settings - Fork 0
/
azure-pipelines.yml
301 lines (261 loc) · 10.6 KB
/
azure-pipelines.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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
trigger:
- '*'
# Configure BuildNumber
name: $(Rev:r)
stages:
- stage: Build
jobs:
- job: Build_api
pool:
vmImage: 'ubuntu-latest'
continueOnError: false
dependsOn: []
variables:
imageName: '$(dockerId)/sap-api:$(Build.BuildNumber)'
imageNameRelease: '$(dockerId)/sap-api:latest'
steps:
- script: DOCKER_BUILDKIT=0 docker build -f Dockerfile -t $(imageName) .
displayName: 'Docker build and test'
workingDirectory: web
- script: |
export id=$(docker images --filter "label=test=true" -q | head -1)
docker create --name testapi $id
docker cp testapi:/app/junit.xml ./junit.xml
docker rm testapi
displayName: 'Get test results'
condition: succeededOrFailed()
- task: PublishTestResults@2
inputs:
testResultsFiles: '**/junit.xml'
searchFolder: '$(System.DefaultWorkingDirectory)/'
publishRunAttachments: true
failTaskOnFailedTests: true
displayName: 'Publish test results'
condition: succeededOrFailed()
- script: |
echo $MAPPED_DOCKER_PASS | docker login -u $(dockerId) --password-stdin
docker push $(imageName)
docker tag $(imageName) $(imageNameRelease)
docker push $(imageNameRelease)
displayName: 'Publish docker image'
env:
MAPPED_DOCKER_PASS: $(dockerPass)
- job: Build_webapp
pool:
vmImage: 'ubuntu-latest'
continueOnError: false
dependsOn: []
variables:
imageName: '$(dockerId)/sap-web:$(Build.BuildNumber)'
imageNameRelease: '$(dockerId)/sap-web:latest'
steps:
- script: DOCKER_BUILDKIT=0 docker build -f Dockerfile -t $(imageName) .
displayName: 'Docker build and test'
workingDirectory: app
- script: |
export id=$(docker images --filter "label=test=true" -q | head -1)
docker create --name testweb $id
docker cp testweb:/app/junit.xml ./junit.xml
docker rm testweb
displayName: 'Get test results'
condition: succeededOrFailed()
- task: PublishTestResults@2
inputs:
testResultsFiles: '**/junit.xml'
searchFolder: '$(System.DefaultWorkingDirectory)/'
publishRunAttachments: true
failTaskOnFailedTests: true
displayName: 'Publish test results'
condition: succeededOrFailed()
- script: |
echo $MAPPED_DOCKER_PASS | docker login -u $(dockerId) --password-stdin
docker push $(imageName)
docker tag $(imageName) $(imageNameRelease)
docker push $(imageNameRelease)
displayName: 'Publish docker image'
env:
MAPPED_DOCKER_PASS: $(dockerPass)
- job: Build_listener
pool:
vmImage: 'ubuntu-latest'
continueOnError: false
dependsOn: []
variables:
listenerImageName: '$(dockerId)/bifrost-listener:$(Build.BuildNumber)'
listenerImageNameRelease: '$(dockerId)/bifrost-listener:latest'
steps:
- script: DOCKER_BUILDKIT=0 docker build -f ./bifrost_listener/Dockerfile -t $(listenerImageName) ./bifrost_listener
displayName: 'Docker build and test listener'
workingDirectory: bifrost
- script: |
echo $MAPPED_DOCKER_PASS | docker login -u $(dockerId) --password-stdin
docker push $(listenerImageName)
docker tag $(listenerImageName) $(listenerImageNameRelease)
docker push $(listenerImageNameRelease)
displayName: 'Publish docker images'
env:
MAPPED_DOCKER_PASS: $(dockerPass)
- job: Build_broker
pool:
vmImage: 'ubuntu-latest'
continueOnError: false
dependsOn: []
variables:
brokerImageName: '$(dockerId)/sap-queue-broker:$(Build.BuildNumber)'
brokerImageNameRelease: '$(dockerId)/sap-queue-broker:latest'
steps:
- script: DOCKER_BUILDKIT=0 docker build -f ./bifrost_queue_broker/Dockerfile -t $(brokerImageName) ./bifrost_queue_broker
displayName: 'Docker build and test broker'
workingDirectory: bifrost
- script: |
export id=$(docker images --filter "label=test=true" -q | head -1)
docker create --name testbroker $id
docker cp testbroker:/app/junit.xml ./junit.xml
docker rm testbroker
displayName: 'Get test results'
condition: succeededOrFailed()
- task: PublishTestResults@2
inputs:
testResultsFiles: '**/junit.xml'
searchFolder: '$(System.DefaultWorkingDirectory)/'
publishRunAttachments: true
failTaskOnFailedTests: true
displayName: 'Publish test results'
condition: succeededOrFailed()
- script: |
echo $MAPPED_DOCKER_PASS | docker login -u $(dockerId) --password-stdin
docker push $(brokerImageName)
docker tag $(brokerImageName) $(brokerImageNameRelease)
docker push $(brokeImageNameRelease)
docker push $(brokerImageName)
displayName: 'Publish docker images'
env:
MAPPED_DOCKER_PASS: $(dockerPass)
- job: Build_auth
pool:
vmImage: 'ubuntu-latest'
continueOnError: false
dependsOn: []
variables:
imageName: '$(dockerId)/auth-selfservice-ui:$(Build.BuildNumber)'
imageNameRelease: '$(dockerId)/auth-selfservice-ui:latest'
steps:
- script: DOCKER_BUILDKIT=0 docker build -f Dockerfile -t $(imageName) .
displayName: 'Docker build and test'
workingDirectory: auth
- script: |
echo $MAPPED_DOCKER_PASS | docker login -u $(dockerId) --password-stdin
docker push $(imageName)
docker tag $(imageName) $(imageNameRelease)
docker push $(imageNameRelease)
displayName: 'Publish docker image'
env:
MAPPED_DOCKER_PASS: $(dockerPass)
- job: Prep_artifact
pool:
vmImage: 'ubuntu-latest'
continueOnError: false
variables:
buildNo: '$(Build.BuildNumber)'
steps:
- script: |
echo $(buildNo) >> tag.txt
displayName: 'Stamp build number'
workingDirectory: $(Build.ArtifactStagingDirectory)
- task: CopyFiles@2
inputs:
contents: |
Makefile
docker-compose.yml
docker-compose.live.yml
Caddyfile
sofi.service
sofi_filesync.service
sofi_filesync.sh
auth/config/**
auth/pg/pg-init/**
management_scripts/**
targetFolder: $(build.artifactstagingdirectory)
displayName: 'Copy deployment artifacts into staging folder'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'drop'
publishLocation: 'Container'
displayName: 'Publish build artifact'
- stage: Deploy_Test
pool:
name: Computerome
demands:
- agent.name -equals foodwebdev
jobs:
- deployment: deploy_test
continueOnError: false
environment: SOFI Test
strategy:
runOnce:
deploy:
steps:
- download: none
- task: DownloadPipelineArtifact@2
displayName: "Download build artifact"
inputs:
artifactName: drop
targetPath: $(System.DefaultWorkingDirectory)
- script: |
cp -R ./* /opt/sofi/
cd /opt/sofi/
sed -i "s/^SOFI_RELEASE_TAG=.*$/SOFI_RELEASE_TAG=`cat tag.txt`/g" .env
chmod -R +x /opt/sofi/management_scripts
chmod +x /opt/sofi/sofi_filesync.sh
chmod +x /opt/sofi/container_restart.sh
systemctl disable sofi_filesync.service
systemctl disable container_restart.service
systemctl disable container_restart.timer
cp /opt/sofi/sofi_filesync.service /etc/systemd/system/sofi_filesync.service
cp /opt/sofi/container_restart.service /etc/systemd/system/container_restart.service
cp /opt/sofi/container_restart.timer /etc/systemd/system/container_restart.timer
systemctl enable sofi_filesync.service
systemctl enable container_restart.service
systemctl enable container_restart.timer
systemctl disable sofi.service
make install
systemctl restart sofi.service
- stage: Deploy_Prod
pool:
name: Computerome
demands:
- agent.name -equals foodweb
jobs:
- deployment: deploy_prod
continueOnError: false
environment: SOFI Prod
strategy:
runOnce:
deploy:
steps:
- download: none
- task: DownloadPipelineArtifact@2
displayName: "Download build artifact"
inputs:
artifactName: drop
targetPath: $(System.DefaultWorkingDirectory)
- script: |
cp -R ./* /opt/sofi/
cd /opt/sofi/
sed -i "s/^SOFI_RELEASE_TAG=.*$/SOFI_RELEASE_TAG=`cat tag.txt`/g" .env
chmod -R +x /opt/sofi/management_scripts
chmod +x /opt/sofi/sofi_filesync.sh
chmod +x /opt/sofi/container_restart.sh
#systemctl disable sofi_filesync.service
systemctl disable container_restart.service
systemctl disable container_restart.timer
cp /opt/sofi/sofi_filesync.service /etc/systemd/system/sofi_filesync.service
cp /opt/sofi/container_restart.service /etc/systemd/system/container_restart.service
cp /opt/sofi/container_restart.timer /etc/systemd/system/container_restart.timer
#systemctl enable sofi_filesync.service
systemctl enable container_restart.service
systemctl enable container_restart.timer
systemctl disable sofi.service
make install
systemctl restart sofi.service