11parameters :
22 architectures : []
33
4-
54stages :
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