1
+ name : Pipeline
2
+
3
+ on :
4
+ push :
5
+ paths :
6
+ - " src/*"
7
+ - " .github/workflows/*"
8
+ pull_request :
9
+ paths :
10
+ - " src/*"
11
+ - " .github/workflows/*"
12
+
13
+ env :
14
+ version : 2.2.${{github.run_number}}
15
+ imageRepository : " emberstack/azure-pipelines-agent"
16
+ DOCKER_CLI_EXPERIMENTAL : " enabled"
17
+
18
+
19
+ jobs :
20
+ ci :
21
+ name : CI
22
+ runs-on : ubuntu-latest
23
+ steps :
24
+
25
+ - name : tools - helm - install
26
+ uses : azure/setup-helm@v1
27
+
28
+ - name : tools - docker - login
29
+ uses : docker/login-action@v1
30
+ with :
31
+ username : ${{ secrets.ES_DOCKERHUB_USERNAME }}
32
+ password : ${{ secrets.ES_DOCKERHUB_PAT }}
33
+
34
+ - name : artifacts - prepare directories
35
+ run : mkdir -p .artifacts/helm
36
+
37
+ - name : checkout
38
+ uses : actions/checkout@v2
39
+
40
+ - name : helm - import README
41
+ run : cp README.md src/helm/azure-pipelines-agent/README.md
42
+
43
+ - name : helm - template chart
44
+ run : helm package --destination .artifacts/helm --version ${{env.version}} --app-version ${{env.version}} src/helm/azure-pipelines-agent
45
+
46
+ - name : " artifacts - upload - helm chart"
47
+ uses : actions/upload-artifact@v2
48
+ with :
49
+ name : helm
50
+ path : .artifacts/helm
51
+
52
+ - name : " docker - build and publish"
53
+ run : |
54
+ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
55
+ # docker buildx rm builder
56
+ docker buildx create --name builder --driver docker-container --use
57
+ docker buildx inspect --bootstrap
58
+ docker buildx build --push --platform linux/amd64 -t ${{env.imageRepository}}:build-${{env.version}}-amd64 -f src/docker/Dockerfile src/docker
59
+ docker buildx build --push --platform linux/arm -t ${{env.imageRepository}}:build-${{env.version}}-arm32v7 -f src/docker/Dockerfile src/docker
60
+ docker buildx build --push --platform linux/arm64 -t ${{env.imageRepository}}:build-${{env.version}}-arm64v8 -f src/docker/Dockerfile src/docker
61
+ docker pull ${{env.imageRepository}}:build-${{env.version}}-amd64
62
+ docker pull ${{env.imageRepository}}:build-${{env.version}}-arm32v7
63
+ docker pull ${{env.imageRepository}}:build-${{env.version}}-arm64v8
64
+ docker manifest create ${{env.imageRepository}}:build-${{env.version}} ${{env.imageRepository}}:build-${{env.version}}-amd64 ${{env.imageRepository}}:build-${{env.version}}-arm32v7 ${{env.imageRepository}}:build-${{env.version}}-arm64v8
65
+ docker manifest inspect ${{env.imageRepository}}:build-${{env.version}}
66
+ docker manifest push ${{env.imageRepository}}:build-${{env.version}}
67
+
68
+ cd :
69
+ name : CD
70
+ needs : ci
71
+ if : github.event_name == 'push' && github.ref == 'refs/heads/main'
72
+ runs-on : ubuntu-latest
73
+ steps :
74
+ - name : tools - helm - install
75
+ uses : azure/setup-helm@v1
76
+
77
+ - name : tools - docker - login
78
+ uses : docker/login-action@v1
79
+ with :
80
+ username : ${{ secrets.ES_DOCKERHUB_USERNAME }}
81
+ password : ${{ secrets.ES_DOCKERHUB_PAT }}
82
+
83
+ - name : artifacts - download - helm chart
84
+ uses : actions/download-artifact@v2
85
+ with :
86
+ name : helm
87
+ path : .artifacts/helm
88
+
89
+ - name : " docker - tag and push"
90
+ run : |
91
+ docker pull ${{env.imageRepository}}:build-${{env.version}}-amd64
92
+ docker pull ${{env.imageRepository}}:build-${{env.version}}-arm32v7
93
+ docker pull ${{env.imageRepository}}:build-${{env.version}}-arm64v8
94
+ docker manifest create ${{env.imageRepository}}:${{env.version}} ${{env.imageRepository}}:build-${{env.version}}-amd64 ${{env.imageRepository}}:build-${{env.version}}-arm32v7 ${{env.imageRepository}}:build-${{env.version}}-arm64v8
95
+ docker manifest create ${{env.imageRepository}}:latest ${{env.imageRepository}}:build-${{env.version}}-amd64 ${{env.imageRepository}}:build-${{env.version}}-arm32v7 ${{env.imageRepository}}:build-${{env.version}}-arm64v8
96
+ docker manifest push ${{env.imageRepository}}:${{env.version}}
97
+ docker manifest push ${{env.imageRepository}}:latest
98
+ docker manifest push ${{env.imageRepository}}:${{env.version}}
99
+ docker manifest push ${{env.imageRepository}}:latest
100
+ docker tag ${{env.imageRepository}}:build-${{env.version}}-amd64 ${{env.imageRepository}}:${{env.version}}-amd64
101
+ docker tag ${{env.imageRepository}}:build-${{env.version}}-arm32v7 ${{env.imageRepository}}:${{env.version}}-arm32v7
102
+ docker tag ${{env.imageRepository}}:build-${{env.version}}-arm64v8 ${{env.imageRepository}}:${{env.version}}-arm64v8
103
+ docker push ${{env.imageRepository}}:${{env.version}}-amd64
104
+ docker push ${{env.imageRepository}}:${{env.version}}-arm32v7
105
+ docker push ${{env.imageRepository}}:${{env.version}}-arm64v8
106
+
107
+
108
+ - name : github - checkout - helm-charts
109
+ uses : actions/checkout@v2
110
+ with :
111
+ repository : emberstack/helm-charts
112
+ token : ${{ secrets.ES_GITHUB_PAT }}
113
+ path : helm-charts
114
+
115
+
116
+ - name : github - publish - chart
117
+ run : |
118
+ mkdir -p helm-charts/charts
119
+ cp .artifacts/helm/azure-pipelines-agent-${{env.version}}.tgz helm-charts/charts
120
+
121
+ cd helm-charts
122
+ rm -f index.yaml
123
+ helm repo index ./
124
+
125
+ git config user.name "Romeo Dumitrescu"
126
+ git config user.email "[email protected] "
127
+ git add .
128
+ git status
129
+ git commit -m "Added azure-pipelines-agent-${{env.version}}.tgz"
130
+ git push
131
+
132
+ - name : github - create release
133
+ uses : softprops/action-gh-release@v1
134
+ with :
135
+ repository : emberstack/docker-azure-pipelines-agent
136
+ tag_name : v${{env.version}}
137
+ body : The release process is automated.
138
+ token : ${{ secrets.ES_GITHUB_PAT }}
0 commit comments