1
- name : $(coreVersion).$(Date:yy)$(DayOfYear ).$(Rev:r)
1
+ name : $(version ).$(Rev:r)
2
2
3
3
variables :
4
- coreVersion : 1
4
+ version : 1. 1
5
5
buildConfiguration : " Release"
6
6
imageRepository : " emberstack/sftp"
7
7
DOCKER_CLI_EXPERIMENTAL : ' enabled'
@@ -12,69 +12,129 @@ trigger:
12
12
- " *"
13
13
14
14
stages :
15
-
15
+
16
16
- stage : build
17
17
displayName : " Build"
18
18
jobs :
19
- - job : build
20
- displayName : " Build Job"
19
+
20
+ - job : build_helm
21
+ displayName : " Helm"
21
22
pool :
22
23
vmImage : " Ubuntu-16.04"
23
24
steps :
25
+
24
26
- script : |
25
27
mkdir -p artifacts/helm
26
- mkdir -p artifacts/kubectl
27
28
workingDirectory: '$(Build.ArtifactStagingDirectory)'
28
29
displayName: 'Create Artifacts directories'
29
30
30
31
- task : HelmInstaller@1
31
- displayName : ' Install Helm'
32
- inputs :
33
- helmVersionToInstall : 2.14.1
34
-
35
- - script : ' helm lint'
36
- workingDirectory : deploy/helm/sftp
37
- displayName : ' helm lint'
38
-
39
- - task : HelmDeploy@0
40
- displayName : ' helm package'
41
32
inputs :
42
- connectionType : None
43
- command : package
44
- chartPath : deploy/helm/sftp
45
- chartVersion : ' $(Build.BuildNumber)'
46
- destination : ' $(Build.ArtifactStagingDirectory)/artifacts/helm'
33
+ helmVersionToInstall : ' latest'
47
34
48
- - script : ' helm template --name sftp sftp > $(Build.ArtifactStagingDirectory)/artifacts/kubectl/sftp-$(Build.BuildNumber).yaml '
49
- workingDirectory : deploy/helm
50
- displayName : ' helm template '
35
+ - script : |
36
+ helm package --destination $(Build.ArtifactStagingDirectory)/artifacts/helm --version $(Build.BuildNumber) --app-version $(Build.BuildNumber) deploy/helm/sftp
37
+ displayName: 'Helm Package '
51
38
52
39
- publish : ' $(Build.ArtifactStagingDirectory)/artifacts/helm'
53
40
artifact : ' helm'
54
- displayName : ' Publish helm artifact'
55
41
56
- - publish : ' $(Build.ArtifactStagingDirectory)/artifacts/kubectl'
57
- artifact : ' kubectl'
58
- displayName : ' Publish kubectl artifact'
42
+
43
+
44
+ - job : build_docker_arm32
45
+ displayName : " Docker arm32"
46
+ pool :
47
+ name : winromulus
48
+ demands :
49
+ - Agent.OSArchitecture -equals ARM
50
+ steps :
51
+
52
+ - script : |
53
+ apt-get update
54
+ apt-get install \
55
+ apt-transport-https \
56
+ ca-certificates \
57
+ curl \
58
+ gnupg2 \
59
+ software-properties-common
60
+ curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
61
+ add-apt-repository \
62
+ "deb [arch=amd64] https://download.docker.com/linux/debian \
63
+ $(lsb_release -cs) \
64
+ stable"
65
+ apt-get update
66
+ apt-get install docker-ce docker-ce-cli containerd.io
67
+ displayName: 'Install docker'
68
+
69
+ - task : Docker@2
70
+ displayName : ' Build arm32 image'
71
+ inputs :
72
+ containerRegistry : ' Emberstack Docker Hub'
73
+ repository : $(imageRepository)
74
+ Dockerfile : ES.SFTP.Host/Dockerfile
75
+ command : build
76
+ buildContext : .
77
+ tags : ' build-$(Build.BuildNumber)-arm32'
78
+
79
+ - task : Docker@2
80
+ displayName : " Push image"
81
+ inputs :
82
+ containerRegistry : " Emberstack Docker Hub"
83
+ repository : $(imageRepository)
84
+ command : push
85
+ tags : |
86
+ build-$(Build.BuildNumber)-arm32
87
+
88
+
89
+ - job : build_docker_amd64
90
+ displayName : " Docker amd64"
91
+ pool :
92
+ vmImage : " Ubuntu-16.04"
93
+ steps :
94
+
95
+ - task : DockerInstaller@0
96
+ displayName : ' Install docker'
97
+ inputs :
98
+ dockerVersion : ' 19.03.5'
59
99
60
100
- task : Docker@2
61
- displayName : " Build amd64 image"
101
+ displayName : ' Build amd64 image'
62
102
inputs :
63
- containerRegistry : " Emberstack Docker Hub"
103
+ containerRegistry : ' Emberstack Docker Hub'
64
104
repository : $(imageRepository)
65
105
Dockerfile : ES.SFTP.Host/Dockerfile
66
106
command : build
67
107
buildContext : .
68
- tags : " build-$(Build.BuildNumber)-amd64"
108
+ tags : ' build-$(Build.BuildNumber)-amd64'
69
109
70
110
- task : Docker@2
71
- displayName : " Push images "
111
+ displayName : " Push image "
72
112
inputs :
73
113
containerRegistry : " Emberstack Docker Hub"
74
114
repository : $(imageRepository)
75
115
command : push
76
116
tags : |
77
117
build-$(Build.BuildNumber)-amd64
118
+
119
+
120
+ - job : build_docker_multiarch
121
+ displayName : " Docker multiarch"
122
+ pool :
123
+ vmImage : " Ubuntu-16.04"
124
+ dependsOn :
125
+ - build_docker_amd64
126
+ steps :
127
+
128
+ - task : DockerInstaller@0
129
+ displayName : ' Install docker'
130
+ inputs :
131
+ dockerVersion : ' 19.03.5'
132
+
133
+ - task : Docker@2
134
+ displayName : " Docker Hub Login"
135
+ inputs :
136
+ containerRegistry : " Emberstack Docker Hub"
137
+ command : login
78
138
79
139
- task : Docker@2
80
140
displayName : " Docker Hub Login"
@@ -83,12 +143,14 @@ stages:
83
143
command : login
84
144
85
145
- script : |
86
- docker manifest create $(imageRepository):build-$(Build.BuildNumber) $(imageRepository):build-$(Build.BuildNumber)-amd64
146
+ docker manifest create $(imageRepository):build-$(Build.BuildNumber) $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm32
87
147
docker manifest inspect $(imageRepository):build-$(Build.BuildNumber)
88
148
docker manifest push $(imageRepository):build-$(Build.BuildNumber)
89
149
displayName: "Create and push multi-arch manifest"
90
150
91
151
152
+
153
+
92
154
- stage : release
93
155
displayName : " Release"
94
156
dependsOn : ' build'
@@ -101,31 +163,28 @@ stages:
101
163
variables :
102
164
- group : " OpenSource.GitHub"
103
165
steps :
104
- - checkout : none
105
166
106
- - download : current
107
- artifact : ' helm'
167
+ - checkout : none
108
168
109
169
- download : current
110
- artifact : ' kubectl '
170
+ artifact : ' helm '
111
171
112
172
- task : Docker@2
113
173
displayName : " Docker Login"
114
174
inputs :
115
175
containerRegistry : " Emberstack Docker Hub"
116
176
command : login
117
177
118
- - task : HelmInstaller@0
119
- displayName : ' Install Helm'
178
+ - task : HelmInstaller@1
120
179
inputs :
121
- helmVersion : 2.13.1
122
- kubectlVersion : 1.10.11
180
+ helmVersionToInstall : ' latest'
123
181
124
182
- script : |
125
183
docker pull $(imageRepository):build-$(Build.BuildNumber)-amd64
126
- docker manifest create $(imageRepository):release-$(Build.BuildNumber) $(imageRepository):build-$(Build.BuildNumber)-amd64
127
- docker manifest push $(imageRepository):release-$(Build.BuildNumber)
128
- docker manifest create $(imageRepository):latest $(imageRepository):build-$(Build.BuildNumber)-amd64
184
+ docker pull $(imageRepository):build-$(Build.BuildNumber)-arm32
185
+ docker manifest create $(imageRepository):$(Build.BuildNumber) $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm32
186
+ docker manifest create $(imageRepository):latest $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm32
187
+ docker manifest push $(imageRepository):$(Build.BuildNumber)
129
188
docker manifest push $(imageRepository):latest
130
189
displayName: 'docker pull, tag and push'
131
190
@@ -144,12 +203,7 @@ stages:
144
203
git status
145
204
git commit -m "Added sftp-$(Build.BuildNumber).tgz"
146
205
git push
147
- displayName: 'Add chart to GitHub repository'
148
-
149
- - script : |
150
- mkdir -p github
151
- cp $(Pipeline.Workspace)/kubectl/sftp-$(Build.BuildNumber).yaml github/sftp.yaml
152
- displayName: 'Prepare GitHub Artifacts'
206
+ displayName: 'Add chart to GitHub repository'
153
207
154
208
- task : GitHubRelease@1
155
209
displayName : ' GitHub release (create)'
@@ -161,5 +215,4 @@ stages:
161
215
title : ' Release v$(Build.BuildNumber)'
162
216
releaseNotesSource : inline
163
217
releaseNotes : ' The release process is automated.'
164
- assets : ' $(System.DefaultWorkingDirectory)/github/*.*'
165
218
0 commit comments