1
+ name : $(version).$(Rev:r)
2
+
3
+ variables :
4
+ version : 1.0
5
+ buildConfiguration : " Release"
6
+ imageRepository : " emberstack/azure-pipelines-agent"
7
+ DOCKER_CLI_EXPERIMENTAL : ' enabled'
8
+
9
+ trigger :
10
+ branches :
11
+ include :
12
+ - " *"
13
+
14
+ stages :
15
+
16
+ - stage : build
17
+ displayName : " Build"
18
+ jobs :
19
+
20
+ - job : build_helm
21
+ displayName : " Helm"
22
+ pool :
23
+ vmImage : " Ubuntu-16.04"
24
+ steps :
25
+
26
+ - script : |
27
+ mkdir -p artifacts/helm
28
+ mkdir -p artifacts/kubectl
29
+ workingDirectory: '$(Build.ArtifactStagingDirectory)'
30
+ displayName: 'Create Artifacts directories'
31
+
32
+ - task : HelmInstaller@1
33
+ inputs :
34
+ helmVersionToInstall : ' latest'
35
+
36
+ # - script: 'helm lint'
37
+ # workingDirectory: helm/azure-pipelines-agent
38
+ # displayName: 'helm lint'
39
+
40
+ - script : |
41
+ helm package --destination $(Build.ArtifactStagingDirectory)/artifacts/helm --version $(Build.BuildNumber) --app-version 1.0.3 helm/azure-pipelines-agent
42
+ mkdir -p artifacts/kubectl
43
+ displayName: 'Create Artifacts directories'
44
+
45
+ - publish : ' $(Build.ArtifactStagingDirectory)/artifacts/helm'
46
+ artifact : ' helm'
47
+
48
+
49
+
50
+ - job : build_docker_amd64
51
+ displayName : " Docker amd64"
52
+ pool :
53
+ vmImage : " Ubuntu-16.04"
54
+ steps :
55
+
56
+ - task : DockerInstaller@0
57
+ displayName : ' Install docker'
58
+ inputs :
59
+ dockerVersion : ' 19.03.5'
60
+
61
+ - task : Docker@2
62
+ displayName : ' Build amd64 image'
63
+ inputs :
64
+ containerRegistry : ' Emberstack Docker Hub'
65
+ repository : $(imageRepository)
66
+ Dockerfile : docker/Dockerfile
67
+ command : build
68
+ buildContext : docker
69
+ tags : ' build-$(Build.BuildNumber)-amd64'
70
+
71
+ - task : Docker@2
72
+ displayName : " Push image"
73
+ inputs :
74
+ containerRegistry : " Emberstack Docker Hub"
75
+ repository : $(imageRepository)
76
+ command : push
77
+ tags : |
78
+ build-$(Build.BuildNumber)-amd64
79
+
80
+
81
+
82
+ - job : build_docker_arm32
83
+ displayName : " Docker arm32"
84
+ pool :
85
+ name : winromulus
86
+ demands :
87
+ - Agent.OSArchitecture -equals ARM
88
+ steps :
89
+
90
+ - script : |
91
+ apt-get update
92
+ apt-get install \
93
+ apt-transport-https \
94
+ ca-certificates \
95
+ curl \
96
+ gnupg2 \
97
+ software-properties-common
98
+ curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
99
+ add-apt-repository \
100
+ "deb [arch=amd64] https://download.docker.com/linux/debian \
101
+ $(lsb_release -cs) \
102
+ stable"
103
+ apt-get update
104
+ apt-get install docker-ce docker-ce-cli containerd.io
105
+ displayName: 'Install docker'
106
+
107
+ - task : Docker@2
108
+ displayName : ' Build arm32 image'
109
+ inputs :
110
+ containerRegistry : ' Emberstack Docker Hub'
111
+ repository : $(imageRepository)
112
+ Dockerfile : docker/Dockerfile
113
+ command : build
114
+ buildContext : docker
115
+ tags : ' build-$(Build.BuildNumber)-arm32'
116
+
117
+ - task : Docker@2
118
+ displayName : " Push image"
119
+ inputs :
120
+ containerRegistry : " Emberstack Docker Hub"
121
+ repository : $(imageRepository)
122
+ command : push
123
+ tags : |
124
+ build-$(Build.BuildNumber)-arm32
125
+
126
+
127
+
128
+ - job : build_docker_multiarch
129
+ displayName : " Docker multiarch"
130
+ pool :
131
+ vmImage : " Ubuntu-16.04"
132
+ dependsOn :
133
+ - build_docker_amd64
134
+ - build_docker_arm32
135
+ steps :
136
+
137
+ - task : DockerInstaller@0
138
+ displayName : ' Install docker'
139
+ inputs :
140
+ dockerVersion : ' 19.03.5'
141
+
142
+ - task : Docker@2
143
+ displayName : " Docker Hub Login"
144
+ inputs :
145
+ containerRegistry : " Emberstack Docker Hub"
146
+ command : login
147
+
148
+ - task : Docker@2
149
+ displayName : " Docker Hub Login"
150
+ inputs :
151
+ containerRegistry : " Emberstack Docker Hub"
152
+ command : login
153
+
154
+ - script : |
155
+ docker manifest create $(imageRepository):build-$(Build.BuildNumber) $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm32
156
+ docker manifest inspect $(imageRepository):build-$(Build.BuildNumber)
157
+ docker manifest push $(imageRepository):build-$(Build.BuildNumber)
158
+ displayName: "Create and push multi-arch manifest"
159
+
160
+
161
+
162
+
163
+ - stage : release
164
+ displayName : " Release"
165
+ dependsOn : ' build'
166
+ condition : and(succeeded(), in(variables['Build.Reason'], 'IndividualCI', 'Manual'), in(variables['Build.SourceBranchName'], 'master'))
167
+ jobs :
168
+ - job : release
169
+ displayName : " Release Job"
170
+ pool :
171
+ vmImage : " Ubuntu-16.04"
172
+ variables :
173
+ - group : " OpenSource.GitHub"
174
+ steps :
175
+
176
+ - checkout : none
177
+
178
+ - download : current
179
+ artifact : ' helm'
180
+
181
+ - task : Docker@2
182
+ displayName : " Docker Login"
183
+ inputs :
184
+ containerRegistry : " Emberstack Docker Hub"
185
+ command : login
186
+
187
+ - task : HelmInstaller@1
188
+ inputs :
189
+ helmVersionToInstall : ' latest'
190
+
191
+ - script : |
192
+ docker pull $(imageRepository):build-$(Build.BuildNumber)-amd64
193
+ docker pull $(imageRepository):build-$(Build.BuildNumber)-arm32
194
+ docker manifest create $(imageRepository):release-$(Build.BuildNumber) $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm32
195
+ docker manifest create $(imageRepository):latest $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm32
196
+ docker manifest push $(imageRepository):release-$(Build.BuildNumber)
197
+ docker manifest push $(imageRepository):latest
198
+ displayName: 'docker pull, tag and push'
199
+
200
+ - script : |
201
+ git config --global user.email "$(emberstack-agent-email)"
202
+ git config --global user.name "$(emberstack-agent-name)"
203
+ git clone https://$(emberstack-agent-username):$(emberstack-agent-pat)@github.com/EmberStack/helm-charts.git
204
+
205
+ mkdir -p helm-charts/charts
206
+ cp $(Pipeline.Workspace)/helm/azure-pipelines-agent-$(Build.BuildNumber).tgz helm-charts/charts
207
+
208
+ cd helm-charts
209
+ rm index.yaml
210
+ helm repo index ./
211
+ git add .
212
+ git status
213
+ git commit -m "Added azure-pipelines-agent-$(Build.BuildNumber).tgz"
214
+ git push
215
+ displayName: 'Add chart to GitHub repository'
216
+
217
+ - task : GitHubRelease@1
218
+ displayName : ' GitHub release (create)'
219
+ inputs :
220
+ gitHubConnection : GitHub
221
+ repositoryName : ' EmberStack/docker-azure-pipelines-agent'
222
+ tagSource : userSpecifiedTag
223
+ tag : ' v$(Build.BuildNumber)'
224
+ title : ' Release v$(Build.BuildNumber)'
225
+ releaseNotesSource : inline
226
+ releaseNotes : ' The release process is automated.'
227
+
0 commit comments