1
1
parameters :
2
2
architectures : []
3
3
4
-
5
4
stages :
6
- - stage : cd
7
- displayName : " CD"
8
- dependsOn : ' ci '
9
- condition : and(succeeded(), in(variables['Build.Reason'], 'IndividualCI', 'Manual'), in(variables['Build.SourceBranchName'], 'master'))
10
- jobs :
11
- - job : release
12
- displayName : " Release"
13
- pool :
14
- vmImage : ubuntu-latest
15
- variables :
16
- - group : " OpenSource.GitHub"
17
- - name : " manifest.images"
18
- value : " "
19
- steps :
20
- - checkout : none
21
- - download : current
22
- artifact : ' helm'
23
- displayName : " Download helm artifact"
24
- - task : DockerInstaller@0
25
- displayName : ' Docker install'
26
- inputs :
27
- dockerVersion : ' 19.03.5'
28
- - task : Docker@2
29
- displayName : " Docker login"
30
- inputs :
31
- containerRegistry : " Emberstack Docker Hub"
32
- command : login
33
- - task : HelmInstaller@1
34
- inputs :
35
- helmVersionToInstall : ' 3.1.1'
36
- displayName : " Helm install"
37
- - ${{ each architecture in parameters.architectures }} :
38
- - script : |
39
- docker pull $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }}
40
- echo '##vso[task.setvariable variable=manifest.images]$(manifest.images) $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }}'
41
- docker tag $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }} $(imageRepository):$(Build.BuildNumber)-${{ architecture.arch }}
42
- docker push $(imageRepository):$(Build.BuildNumber)-${{ architecture.arch }}
43
- displayName: "Retag ${{ architecture.arch }} image"
44
- - script : |
45
- docker manifest create $(imageRepository):$(Build.BuildNumber) $(manifest.images)
46
- docker manifest push $(imageRepository):$(Build.BuildNumber)
47
- docker manifest create $(imageRepository):latest $(manifest.images)
48
- docker manifest push $(imageRepository):latest
49
- displayName: ' Create and push multi-arch manifest'
50
- - script : |
51
- git config --global user.email "$(emberstack-agent-email)"
52
- git config --global user.name "$(emberstack-agent-name)"
53
- git clone https://$(emberstack-agent-username):$(emberstack-agent-pat)@github.com/emberstack/helm-charts.git
54
-
55
- mkdir -p helm-charts/charts
56
- cp $(Pipeline.Workspace)/helm/sftp-$(Build.BuildNumber).tgz helm-charts/charts
57
-
58
- cd helm-charts
59
- rm index.yaml
60
- helm repo index ./
61
- git add .
62
- git status
63
- git commit -m "Added sftp-$(Build.BuildNumber).tgz"
64
- git push
65
- displayName: ' Add chart to GitHub repository'
66
- - task : GitHubRelease@1
67
- displayName : ' GitHub release (create)'
68
- inputs :
69
- gitHubConnection : GitHub
70
- repositoryName : ' emberstack/docker-sftp'
71
- tagSource : userSpecifiedTag
72
- tag : ' v$(Build.BuildNumber)'
73
- title : ' Release v$(Build.BuildNumber)'
74
- releaseNotesSource : inline
75
- releaseNotes : ' The release process is automated.'
5
+ - stage : cd
6
+ displayName : " CD"
7
+ dependsOn : " ci "
8
+ condition : and(succeeded(), in(variables['Build.Reason'], 'IndividualCI', 'Manual'), in(variables['Build.SourceBranchName'], 'master'))
9
+ jobs :
10
+ - job : release
11
+ displayName : " Release"
12
+ pool :
13
+ vmImage : ubuntu-latest
14
+ variables :
15
+ - group : " OpenSource.GitHub"
16
+ - name : " manifest.images"
17
+ value : " "
18
+ steps :
19
+ - checkout : none
20
+ - download : current
21
+ artifact : " helm"
22
+ displayName : " Download helm artifact"
23
+ - task : DockerInstaller@0
24
+ displayName : " Docker install"
25
+ inputs :
26
+ dockerVersion : " 19.03.5"
27
+ - task : Docker@2
28
+ displayName : " Docker login"
29
+ inputs :
30
+ containerRegistry : " Emberstack Docker Hub"
31
+ command : login
32
+ - task : HelmInstaller@1
33
+ inputs :
34
+ helmVersionToInstall : " 3.1.1"
35
+ displayName : " Helm install"
36
+ - ${{ each architecture in parameters.architectures }} :
37
+ - script : |
38
+ docker pull $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }}
39
+ echo '##vso[task.setvariable variable=manifest.images]$(manifest.images) $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }}'
40
+ docker tag $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }} $(imageRepository):$(Build.BuildNumber)-${{ architecture.arch }}
41
+ docker push $(imageRepository):$(Build.BuildNumber)-${{ architecture.arch }}
42
+ displayName: "Retag ${{ architecture.arch }} image"
43
+ - script : |
44
+ docker manifest create $(imageRepository):$(Build.BuildNumber) $(manifest.images)
45
+ docker manifest push $(imageRepository):$(Build.BuildNumber)
46
+ docker manifest create $(imageRepository):latest $(manifest.images)
47
+ docker manifest push $(imageRepository):latest
48
+ displayName: " Create and push multi-arch manifest"
49
+ - script : |
50
+ git config --global user.email "$(emberstack-agent-email)"
51
+ git config --global user.name "$(emberstack-agent-name)"
52
+ git clone https://$(emberstack-agent-username):$(emberstack-agent-pat)@github.com/emberstack/helm-charts.git
53
+
54
+ mkdir -p helm-charts/charts
55
+ cp $(Pipeline.Workspace)/helm/sftp-$(Build.BuildNumber).tgz helm-charts/charts
56
+
57
+ cd helm-charts
58
+ rm index.yaml
59
+ helm repo index ./
60
+ git add .
61
+ git status
62
+ git commit -m "Added sftp-$(Build.BuildNumber).tgz"
63
+ git push
64
+ displayName: " Add chart to GitHub repository"
65
+ - task : GitHubRelease@1
66
+ displayName : " GitHub release (create)"
67
+ inputs :
68
+ gitHubConnection : GitHub
69
+ repositoryName : " emberstack/docker-sftp"
70
+ tagSource : userSpecifiedTag
71
+ tag : " v$(Build.BuildNumber)"
72
+ title : " Release v$(Build.BuildNumber)"
73
+ releaseNotesSource : inline
74
+ releaseNotes : " The release process is automated."
0 commit comments