Newer
Older
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
trigger: [ 'master' ]
pool:
name: Hosted Ubuntu 1604
demands: maven
variables:
osProjectName: notification
dockerDir: provider/$(osProjectName)-gcp/docker
imageName: os-$(osProjectName)-app
sourceImageName: gcr.io/opendes/$(imageName)
tag: $(Build.BuildNumber)
steps:
- task: DownloadSecureFile@1
name: gcrKey
inputs:
secureFile: cicd-push-image-to-cr-keyfile.json
- task: Maven@3
displayName: 'Build and test'
inputs:
jdkVersionOption: 1.8
jdkArchitectureOption: 'x64'
mavenPomFile: 'pom.xml'
goals: "clean install"
options: '--settings configuration/settings.xml -DVSTS_FEED_TOKEN=$(VSTS_FEED_TOKEN)'
testResultsFiles: '**/TEST-*.xml'
- bash: |
#!/bin/bash
set -e
pushd $(dockerDir)
docker-compose build $(imageName)
echo 'Image done.'
cat $(gcrKey.secureFilePath) | docker login -u _json_key --password-stdin https://gcr.io
echo 'Login done.'
docker tag $(sourceImageName) $(sourceImageName):$(tag)
docker push $(sourceImageName):$(tag)
popd
displayName: 'Docker image build and push'
- bash: |
sed -i -e "s|{{definitionName}}|$(build.DefinitionName)|g" deploy.sh
sed -i -e "s|{{sourceBranchName}}|$(build.SourceBranchName)|g" deploy.sh
sed -i -e "s|{{buildNumber}}|$(build.BuildNumber)|g" deploy.sh
workingDirectory: provider/notification-gcp/scripts
displayName: 'Gomplate GCP deploy script'
- task: ArchiveFiles@2
displayName: 'Archive integration-tests'
inputs:
rootFolderOrFile: 'testing'
archiveFile: 'provider/notification-gcp/target/integration-tests.zip'
includeRootFolder: false
- task: CopyFiles@2
displayName: 'Copy deployable jar and integration tests zip'
inputs:
sourceFolder: 'provider/notification-gcp/target'
contents: |
*spring-boot.jar
integration-tests.zip
targetFolder: '$(build.artifactstagingdirectory)/deploy'
- task: CopyFiles@2
displayName: 'Copy maven settings.xml'
inputs:
sourceFolder: 'configuration'
contents: 'settings.xml'
targetFolder: '$(build.artifactstagingdirectory)/deploy'
- task: CopyFiles@2
displayName: 'Copy deploy scripts'
inputs:
sourceFolder: 'provider/notification-gcp/scripts'
contents: '**'
targetFolder: '$(build.artifactstagingdirectory)/deploy'
- task: CopyFiles@2
displayName: 'Copy deployment yaml'
inputs:
sourceFolder: 'provider/notification-gcp/src/main/appengine'
contents: '**'
targetFolder: '$(build.artifactstagingdirectory)/deploy'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'