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 "5931333+winromulus@users.noreply.github.com"
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