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
- - download : current
25
- artifact : ' kubectl'
26
- displayName : " Download kubectl artifact"
27
- - task : DockerInstaller@0
28
- displayName : ' Docker install'
29
- inputs :
30
- dockerVersion : ' 19.03.5'
31
- - task : Docker@2
32
- displayName : " Docker login"
33
- inputs :
34
- containerRegistry : " Emberstack Docker Hub"
35
- command : login
36
- - task : HelmInstaller@1
37
- inputs :
38
- helmVersionToInstall : ' 3.1.1'
39
- displayName : " Helm install"
40
- - ${{ each architecture in parameters.architectures }} :
41
- - script : |
42
- docker pull $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }}
43
- echo '##vso[task.setvariable variable=manifest.images]$(manifest.images) $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }}'
44
- docker tag $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }} $(imageRepository):$(Build.BuildNumber)-${{ architecture.arch }}
45
- docker push $(imageRepository):$(Build.BuildNumber)-${{ architecture.arch }}
46
- displayName: "Retag ${{ architecture.arch }} image"
47
- - script : |
48
- docker manifest create $(imageRepository):$(Build.BuildNumber) $(manifest.images)
49
- docker manifest push $(imageRepository):$(Build.BuildNumber)
50
- docker manifest create $(imageRepository):latest $(manifest.images)
51
- docker manifest push $(imageRepository):latest
52
- displayName: ' Create and push multi-arch manifest'
53
- - script : |
54
- git config --global user.email "$(emberstack-agent-email)"
55
- git config --global user.name "$(emberstack-agent-name)"
56
- git clone https://$(emberstack-agent-username):$(emberstack-agent-pat)@github.com/emberstack/helm-charts.git
57
-
58
- mkdir -p helm-charts/charts
59
- cp $(Pipeline.Workspace)/helm/reflector-$(Build.BuildNumber).tgz helm-charts/charts
60
-
61
- cd helm-charts
62
- rm index.yaml
63
- helm repo index ./
64
- git add .
65
- git status
66
- git commit -m "Added reflector-$(Build.BuildNumber).tgz"
67
- git push
68
- displayName: ' GitHub - Commit chart'
69
- - script : |
70
- mkdir -p github
71
- cp $(Pipeline.Workspace)/kubectl/reflector-$(Build.BuildNumber).yaml github/reflector.yaml
72
- displayName: ' GitHub - Prepare artifacts'
73
- - task : GitHubRelease@1
74
- displayName : ' GitHub - Create release'
75
- inputs :
76
- gitHubConnection : GitHub
77
- repositoryName : ' emberstack/kubernetes-reflector'
78
- tagSource : userSpecifiedTag
79
- tag : ' v$(Build.BuildNumber)'
80
- title : ' Release v$(Build.BuildNumber)'
81
- releaseNotesSource : inline
82
- releaseNotes : ' The release process is automated.'
83
- assets : ' $(System.DefaultWorkingDirectory)/github/*.*'
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
+ - download : current
24
+ artifact : " kubectl"
25
+ displayName : " Download kubectl artifact"
26
+ - task : DockerInstaller@0
27
+ displayName : " Docker install"
28
+ inputs :
29
+ dockerVersion : " 19.03.5"
30
+ - task : Docker@2
31
+ displayName : " Docker login"
32
+ inputs :
33
+ containerRegistry : " Emberstack Docker Hub"
34
+ command : login
35
+ - task : HelmInstaller@1
36
+ inputs :
37
+ helmVersionToInstall : " 3.1.1"
38
+ displayName : " Helm install"
39
+ - ${{ each architecture in parameters.architectures }} :
40
+ - script : |
41
+ docker pull $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }}
42
+ echo '##vso[task.setvariable variable=manifest.images]$(manifest.images) $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }}'
43
+ docker tag $(imageRepository):build-$(Build.BuildNumber)-${{ architecture.arch }} $(imageRepository):$(Build.BuildNumber)-${{ architecture.arch }}
44
+ docker push $(imageRepository):$(Build.BuildNumber)-${{ architecture.arch }}
45
+ displayName: "Retag ${{ architecture.arch }} image"
46
+ - script : |
47
+ docker manifest create $(imageRepository):$(Build.BuildNumber) $(manifest.images)
48
+ docker manifest push $(imageRepository):$(Build.BuildNumber)
49
+ docker manifest create $(imageRepository):latest $(manifest.images)
50
+ docker manifest push $(imageRepository):latest
51
+ displayName: " Create and push multi-arch manifest"
52
+ - script : |
53
+ git config --global user.email "$(emberstack-agent-email)"
54
+ git config --global user.name "$(emberstack-agent-name)"
55
+ git clone https://$(emberstack-agent-username):$(emberstack-agent-pat)@github.com/emberstack/helm-charts.git
56
+
57
+ mkdir -p helm-charts/charts
58
+ cp $(Pipeline.Workspace)/helm/reflector-$(Build.BuildNumber).tgz helm-charts/charts
59
+
60
+ cd helm-charts
61
+ rm index.yaml
62
+ helm repo index ./
63
+ git add .
64
+ git status
65
+ git commit -m "Added reflector-$(Build.BuildNumber).tgz"
66
+ git push
67
+ displayName: " GitHub - Commit chart"
68
+ - script : |
69
+ mkdir -p github
70
+ cp $(Pipeline.Workspace)/kubectl/reflector-$(Build.BuildNumber).yaml github/reflector.yaml
71
+ displayName: " GitHub - Prepare artifacts"
72
+ - task : GitHubRelease@1
73
+ displayName : " GitHub - Create release"
74
+ inputs :
75
+ gitHubConnection : GitHub
76
+ repositoryName : " emberstack/kubernetes-reflector"
77
+ tagSource : userSpecifiedTag
78
+ tag : " v$(Build.BuildNumber)"
79
+ title : " Release v$(Build.BuildNumber)"
80
+ releaseNotesSource : inline
81
+ releaseNotes : " The release process is automated."
82
+ assets : " $(System.DefaultWorkingDirectory)/github/*.*"
0 commit comments