@@ -24,131 +24,129 @@ stages:
2424 pool :
2525 vmImage : ubuntu-latest
2626 steps :
27+ - task : HelmInstaller@1
28+ inputs :
29+ helmVersionToInstall : " 3.7.0"
30+ displayName : " tools - helm - install"
2731 - task : DockerInstaller@0
28- displayName : " Docker install"
32+ displayName : " tools - docker - install"
2933 inputs :
30- dockerVersion : " 19.03.9"
31-
34+ dockerVersion : " 20.10.9"
3235 - task : Docker@2
33- displayName : " Docker login"
36+ displayName : " tools - docker - login"
3437 inputs :
3538 containerRegistry : " Emberstack Docker Hub"
3639 command : login
3740
3841 - script : |
3942 mkdir -p artifacts/helm
4043 workingDirectory: "$(Build.ArtifactStagingDirectory)"
41- displayName: "Create Artifacts directories"
44+ displayName: "artifacts - prepare directories"
4245
43- - task : HelmInstaller@1
44- inputs :
45- helmVersionToInstall : " 3.2.4"
46- displayName : " Helm install"
4746
4847 - script : |
49- cp README.md src/helm/azure-pipelines-agent/README.md
50- displayName: "Import README in helm chart"
51-
48+ cp README.md src/helm/reflector/README.md
49+ displayName: "helm - import README"
5250 - script : |
5351 helm package --destination $(Build.ArtifactStagingDirectory)/artifacts/helm --version $(Build.BuildNumber) --app-version $(Build.BuildNumber) src/helm/azure-pipelines-agent
54- displayName: "Helm Package"
55-
52+ displayName: "helm - template chart"
5653 - publish : " $(Build.ArtifactStagingDirectory)/artifacts/helm"
5754 artifact : " helm"
58- displayName : " Publish helm artifact "
55+ displayName : " artifacts - publish - helm chart "
5956
6057 - script : |
6158 docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
6259 docker buildx rm builder
6360 docker buildx create --name builder --driver docker-container --use
6461 docker buildx inspect --bootstrap
65- docker buildx build --push --platform linux/amd64 -t $(imageRepository):build-$(Build.BuildNumber)-amd64 -f src/docker /Dockerfile src/docker
66- docker buildx build --push --platform linux/arm -t $(imageRepository):build-$(Build.BuildNumber)-arm -f src/docker /Dockerfile src/docker
67- docker buildx build --push --platform linux/arm64 -t $(imageRepository):build-$(Build.BuildNumber)-arm64 -f src/docker /Dockerfile src/docker
62+ docker buildx build --push --platform linux/amd64 -t $(imageRepository):build-$(Build.BuildNumber)-amd64 -f src/ES.Kubernetes.Reflector /Dockerfile src/
63+ docker buildx build --push --platform linux/arm -t $(imageRepository):build-$(Build.BuildNumber)-arm32v7 -f src/ES.Kubernetes.Reflector /Dockerfile src/
64+ docker buildx build --push --platform linux/arm64 -t $(imageRepository):build-$(Build.BuildNumber)-arm64v8 -f src/ES.Kubernetes.Reflector /Dockerfile src/
6865 docker pull $(imageRepository):build-$(Build.BuildNumber)-amd64
69- docker pull $(imageRepository):build-$(Build.BuildNumber)-arm
70- docker pull $(imageRepository):build-$(Build.BuildNumber)-arm64
71- docker manifest create $(imageRepository):build-$(Build.BuildNumber) $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm $(imageRepository):build-$(Build.BuildNumber)-arm64
66+ docker pull $(imageRepository):build-$(Build.BuildNumber)-arm32v7
67+ docker pull $(imageRepository):build-$(Build.BuildNumber)-arm64v8
68+ docker manifest create $(imageRepository):build-$(Build.BuildNumber) $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm32v7 $(imageRepository):build-$(Build.BuildNumber)-arm64v8
7269 docker manifest inspect $(imageRepository):build-$(Build.BuildNumber)
7370 docker manifest push $(imageRepository):build-$(Build.BuildNumber)
74- displayName: "Build and push multi-arch Docker image"
75-
76- - stage : cd
77- displayName : " CD"
78- dependsOn : " ci"
79- condition : and(succeeded(), in(variables['Build.Reason'], 'IndividualCI', 'Manual'), in(variables['Build.SourceBranchName'], 'master'))
80- jobs :
81- - job : release
82- displayName : " Release Job"
83- pool :
84- vmImage : ubuntu-latest
85- variables :
86- - group : " OpenSource.GitHub"
87- steps :
88- - checkout : none
89-
90- - download : current
91- artifact : " helm"
92- displayName : " Download helm artifact"
93-
94- - task : DockerInstaller@0
95- displayName : " Docker install"
96- inputs :
97- dockerVersion : " 19.03.9"
98-
99- - task : Docker@2
100- displayName : " Docker login"
101- inputs :
102- containerRegistry : " Emberstack Docker Hub"
103- command : login
104-
105- - task : HelmInstaller@1
106- inputs :
107- helmVersionToInstall : " 3.1.1"
108- displayName : " Helm install"
109-
110- - script : |
111- docker pull $(imageRepository):build-$(Build.BuildNumber)-amd64
112- docker pull $(imageRepository):build-$(Build.BuildNumber)-arm
113- docker pull $(imageRepository):build-$(Build.BuildNumber)-arm64
114- docker manifest create $(imageRepository):$(Build.BuildNumber) $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm $(imageRepository):build-$(Build.BuildNumber)-arm64
115- docker manifest create $(imageRepository):latest $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm $(imageRepository):build-$(Build.BuildNumber)-arm64
116- docker manifest push $(imageRepository):$(Build.BuildNumber)
117- docker manifest push $(imageRepository):latest
118- docker manifest push $(imageRepository):$(Build.BuildNumber)
119- docker manifest push $(imageRepository):latest
120- docker tag $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):$(Build.BuildNumber)-amd64
121- docker tag $(imageRepository):build-$(Build.BuildNumber)-arm64 $(imageRepository):$(Build.BuildNumber)-arm64
122- docker tag $(imageRepository):build-$(Build.BuildNumber)-arm $(imageRepository):$(Build.BuildNumber)-arm
123- docker push $(imageRepository):$(Build.BuildNumber)-amd64
124- docker push $(imageRepository):$(Build.BuildNumber)-arm
125- docker push $(imageRepository):$(Build.BuildNumber)-arm64
126- displayName: "Build and push multi-arch Docker image"
127-
128- - script : |
129- git config --global user.email "$(emberstack-agent-email)"
130- git config --global user.name "$(emberstack-agent-name)"
131- git clone https://$(emberstack-agent-username):$(emberstack-agent-pat)@github.com/emberstack/helm-charts.git
132-
133- mkdir -p helm-charts/charts
134- cp $(Pipeline.Workspace)/helm/azure-pipelines-agent-$(Build.BuildNumber).tgz helm-charts/charts
135-
136- cd helm-charts
137- rm index.yaml
138- helm repo index ./
139- git add .
140- git status
141- git commit -m "Added azure-pipelines-agent-$(Build.BuildNumber).tgz"
142- git push
143- displayName: "Create chart release"
144-
145- - task : GitHubRelease@1
146- displayName : " Create GitHub release"
147- inputs :
148- gitHubConnection : GitHub
149- repositoryName : " EmberStack/docker-azure-pipelines-agent"
150- tagSource : userSpecifiedTag
151- tag : " v$(Build.BuildNumber)"
152- title : " Release v$(Build.BuildNumber)"
153- releaseNotesSource : inline
154- releaseNotes : " The release process is automated."
71+ displayName: "docker - build and publish"
72+
73+ - ${{ if eq(variables['Build.SourceBranchName'], 'main') }} :
74+ - stage : cd
75+ displayName : " CD"
76+ dependsOn : " ci"
77+ condition : and(succeeded(), in(variables['Build.Reason'], 'IndividualCI', 'Manual'), in(variables['Build.SourceBranchName'], 'master'))
78+ jobs :
79+ - job : release
80+ displayName : " Release"
81+ pool :
82+ vmImage : ubuntu-latest
83+ variables :
84+ - group : " OpenSource.GitHub"
85+ steps :
86+ - checkout : none
87+
88+
89+ - task : HelmInstaller@1
90+ inputs :
91+ helmVersionToInstall : " 3.7.0"
92+ displayName : " tools - helm - install"
93+ - task : DockerInstaller@0
94+ displayName : " tools - docker - install"
95+ inputs :
96+ dockerVersion : " 20.10.9"
97+ - task : Docker@2
98+ displayName : " tools - docker - login"
99+ inputs :
100+ containerRegistry : " Emberstack Docker Hub"
101+ command : login
102+
103+
104+ - download : current
105+ artifact : " helm"
106+ displayName : " artifacts - download - helm chart"
107+
108+
109+ - script : |
110+ docker pull $(imageRepository):build-$(Build.BuildNumber)-amd64
111+ docker pull $(imageRepository):build-$(Build.BuildNumber)-arm32v7
112+ docker pull $(imageRepository):build-$(Build.BuildNumber)-arm64v8
113+ docker manifest create $(imageRepository):$(Build.BuildNumber) $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm32v7 $(imageRepository):build-$(Build.BuildNumber)-arm64v8
114+ docker manifest create $(imageRepository):latest $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):build-$(Build.BuildNumber)-arm32v7 $(imageRepository):build-$(Build.BuildNumber)-arm64v8
115+ docker manifest push $(imageRepository):$(Build.BuildNumber)
116+ docker manifest push $(imageRepository):latest
117+ docker manifest push $(imageRepository):$(Build.BuildNumber)
118+ docker manifest push $(imageRepository):latest
119+ docker tag $(imageRepository):build-$(Build.BuildNumber)-amd64 $(imageRepository):$(Build.BuildNumber)-amd64
120+ docker tag $(imageRepository):build-$(Build.BuildNumber)-arm32v7 $(imageRepository):$(Build.BuildNumber)-arm32v7
121+ docker tag $(imageRepository):build-$(Build.BuildNumber)-arm64v8 $(imageRepository):$(Build.BuildNumber)-arm64v8
122+ docker push $(imageRepository):$(Build.BuildNumber)-amd64
123+ docker push $(imageRepository):$(Build.BuildNumber)-arm32v7
124+ docker push $(imageRepository):$(Build.BuildNumber)-arm64v8
125+ displayName: "Build and push multi-arch Docker image"
126+ - script : |
127+ git config --global user.email "$(emberstack-agent-email)"
128+ git config --global user.name "$(emberstack-agent-name)"
129+ git clone https://$(emberstack-agent-username):$(emberstack-agent-pat)@github.com/emberstack/helm-charts.git
130+
131+ mkdir -p helm-charts/charts
132+ cp $(Pipeline.Workspace)/helm/azure-pipelines-agent-$(Build.BuildNumber).tgz helm-charts/charts
133+
134+ cd helm-charts
135+ rm index.yaml
136+ helm repo index ./
137+ git add .
138+ git status
139+ git commit -m "Added azure-pipelines-agent-$(Build.BuildNumber).tgz"
140+ git push
141+ displayName: "github - release - chart"
142+
143+ - task : GitHubRelease@1
144+ displayName : " github - create release"
145+ inputs :
146+ gitHubConnection : GitHub
147+ repositoryName : " EmberStack/docker-azure-pipelines-agent"
148+ tagSource : userSpecifiedTag
149+ tag : " v$(Build.BuildNumber)"
150+ title : " Release v$(Build.BuildNumber)"
151+ releaseNotesSource : inline
152+ releaseNotes : " The release process is automated."
0 commit comments