Skip to content

Commit c2be1cb

Browse files
authored
Migrate to GitHub Actions (#16)
1 parent fffe246 commit c2be1cb

File tree

2 files changed

+139
-2
lines changed

2 files changed

+139
-2
lines changed

.github/workflows/pipeline.yaml

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
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 }}

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Azure Pipelines Agent
22
[Azure Pipelines Agent](https://github.com/emberstack/docker-azure-pipelines-agent) is self-hosted agent that you can run in a container with Docker.
33

4-
[![Build Status](https://dev.azure.com/emberstack/OpenSource/_apis/build/status/docker-azure-pipelines-agent?branchName=main)](https://dev.azure.com/emberstack/OpenSource/_build/latest?definitionId=17&branchName=main)
4+
[![Pipeline](https://github.com/emberstack/docker-azure-pipelines-agent/actions/workflows/pipeline.yaml/badge.svg)](https://github.com/emberstack/docker-azure-pipelines-agent/actions/workflows/pipeline.yaml)
55
[![Release](https://img.shields.io/github/release/emberstack/docker-azure-pipelines-agent.svg?style=flat-square)](https://github.com/emberstack/docker-azure-pipelines-agent/releases/latest)
66
[![Docker Image](https://img.shields.io/docker/image-size/emberstack/azure-pipelines-agent/latest?style=flat-square)](https://hub.docker.com/r/emberstack/azure-pipelines-agent)
77
[![Docker Pulls](https://img.shields.io/docker/pulls/emberstack/azure-pipelines-agent.svg?style=flat-square)](https://hub.docker.com/r/emberstack/azure-pipelines-agent)
@@ -59,4 +59,3 @@ You can customize the values of the helm deployment by using the following Value
5959
| `affinity` | Node affinity for pod assignment | `{}` |
6060

6161
> Find us on [Artifact Hub](https://artifacthub.io/packages/helm/emberstack/azure-pipelines-agent)
62-

0 commit comments

Comments
 (0)