Skip to content

Commit 2b337bb

Browse files
committed
Updated docker CLI installer
1 parent 805361f commit 2b337bb

File tree

4 files changed

+209
-238
lines changed

4 files changed

+209
-238
lines changed
Lines changed: 45 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,51 @@
11
parameters:
2-
- name: pool
3-
type: string
4-
default: "<empty>"
5-
- name: arch
6-
default: "<empty>"
2+
- name: pool
3+
type: string
4+
default: "<empty>"
5+
- name: arch
6+
default: "<empty>"
77

88
jobs:
9-
- job: build_docker_${{ parameters.arch }}
10-
displayName: "Docker ${{ parameters.arch }} image"
11-
pool:
12-
${{ if eq(parameters.pool, '<empty>') }}:
13-
vmImage: "ubuntu-latest"
14-
${{ if ne(parameters.pool, '<empty>') }}:
15-
name: "${{ parameters.pool }}"
16-
${{ if ne(parameters.arch, '<empty>') }}:
17-
demands:
18-
- ${{ if eq(parameters.arch, 'amd64') }}:
19-
- Agent.OSArchitecture -equals X64
20-
- ${{ if eq(parameters.arch, 'arm') }}:
21-
- Agent.OSArchitecture -equals ARM
22-
- ${{ if eq(parameters.arch, 'arm64') }}:
23-
- Agent.OSArchitecture -equals ARM64
24-
variables:
25-
- ${{ if eq(parameters.arch, 'amd64') }}:
26-
- name: Docker.CLI.Architecture
27-
value: amd64
28-
- ${{ if eq(parameters.arch, 'arm64') }}:
29-
- name: Docker.CLI.Architecture
30-
value: arm64
31-
- ${{ if eq(parameters.arch, 'arm') }}:
32-
- name: Docker.CLI.Architecture
33-
value: armhf
34-
- name: Docker.Image.Architecture
35-
value: ${{ parameters.arch }}
9+
- job: build_docker_${{ parameters.arch }}
10+
displayName: "Docker ${{ parameters.arch }} image"
11+
pool:
12+
${{ if eq(parameters.pool, '<empty>') }}:
13+
vmImage: "ubuntu-latest"
14+
${{ if ne(parameters.pool, '<empty>') }}:
15+
name: "${{ parameters.pool }}"
16+
${{ if ne(parameters.arch, '<empty>') }}:
17+
demands:
18+
- ${{ if eq(parameters.arch, 'amd64') }}:
19+
- Agent.OSArchitecture -equals X64
20+
- ${{ if eq(parameters.arch, 'arm') }}:
21+
- Agent.OSArchitecture -equals ARM
22+
- ${{ if eq(parameters.arch, 'arm64') }}:
23+
- Agent.OSArchitecture -equals ARM64
24+
variables:
25+
- name: Docker.Image.Architecture
26+
value: ${{ parameters.arch }}
3627

37-
steps:
38-
- script: |
39-
docker version
40-
if [ "$?" -ne "0" ]; then
41-
apt-get update
42-
apt-get install \
43-
apt-transport-https \
44-
ca-certificates \
45-
curl \
46-
gnupg2 \
47-
software-properties-common
48-
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
49-
add-apt-repository \
50-
"deb [arch=$(Docker.CLI.Architecture)] https://download.docker.com/linux/ubuntu \
51-
$(lsb_release -cs) \
52-
stable"
53-
apt-get update
54-
apt-get install docker-ce docker-ce-cli containerd.io
55-
fi
56-
displayName: "Docker install"
28+
steps:
29+
- task: DockerInstaller@0
30+
displayName: "Docker install"
31+
inputs:
32+
dockerVersion: "19.03.9"
5733

58-
- task: Docker@2
59-
displayName: 'Build image'
60-
inputs:
61-
containerRegistry: 'Emberstack Docker Hub'
62-
repository: $(imageRepository)
63-
Dockerfile: src/ES.Kubernetes.Reflector.Host/Dockerfile
64-
command: build
65-
buildContext: src
66-
tags: 'build-$(Build.BuildNumber)-$(Docker.Image.Architecture)'
34+
- task: Docker@2
35+
displayName: "Build image"
36+
inputs:
37+
containerRegistry: "Emberstack Docker Hub"
38+
repository: $(imageRepository)
39+
Dockerfile: src/ES.Kubernetes.Reflector.Host/Dockerfile
40+
command: build
41+
buildContext: src
42+
tags: "build-$(Build.BuildNumber)-$(Docker.Image.Architecture)"
6743

68-
- task: Docker@2
69-
displayName: "Push image"
70-
inputs:
71-
containerRegistry: "Emberstack Docker Hub"
72-
repository: $(imageRepository)
73-
command: push
74-
tags: |
75-
build-$(Build.BuildNumber)-$(Docker.Image.Architecture)
44+
- task: Docker@2
45+
displayName: "Push image"
46+
inputs:
47+
containerRegistry: "Emberstack Docker Hub"
48+
repository: $(imageRepository)
49+
command: push
50+
tags: |
51+
build-$(Build.BuildNumber)-$(Docker.Image.Architecture)

.devops/pipelines/stage.cd.yaml

Lines changed: 78 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,82 @@
11
parameters:
22
architectures: []
33

4-
54
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

Comments
 (0)