Skip to content

Commit 10096ca

Browse files
Merge pull request #211 from code-inflation/feature/native-arm64-runners
Use native ARM64 runners for faster Docker builds
2 parents b0f8cb2 + 9f3b72d commit 10096ca

File tree

2 files changed

+55
-9
lines changed

2 files changed

+55
-9
lines changed

.github/workflows/CI.yml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,23 @@ jobs:
3030
- name: Run CLI
3131
run: cargo run
3232

33-
docker-build:
33+
docker-build-amd64:
3434
runs-on: ubuntu-latest
3535
steps:
3636
- uses: actions/checkout@v4
3737
- name: Set up Docker Buildx
3838
uses: docker/setup-buildx-action@v3
39-
- name: Build and push Docker image
39+
- name: Build AMD64 Docker image
4040
uses: docker/build-push-action@v5
4141
with:
42-
platforms: linux/amd64,linux/arm64
42+
platforms: linux/amd64
4343
push: false
4444
tags: |
45-
cybuerg/cfspeedtest:${{ github.sha }}
45+
cybuerg/cfspeedtest:${{ github.sha }}-amd64
46+
47+
docker-build-arm64:
48+
runs-on: ubuntu-24.04-arm
49+
steps:
50+
- uses: actions/checkout@v4
51+
- name: Build ARM64 Docker image
52+
run: docker build --platform linux/arm64 -t cybuerg/cfspeedtest:${{ github.sha }}-arm64 .

.github/workflows/release.yaml

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
zip: windows
4646
token: ${{ secrets.GITHUB_TOKEN }}
4747

48-
docker-build-and-push:
48+
docker-build-amd64:
4949
needs: [create-release, upload-assets]
5050
runs-on: ubuntu-latest
5151
steps:
@@ -57,11 +57,50 @@ jobs:
5757
with:
5858
username: ${{ secrets.DOCKERHUB_USERNAME }}
5959
password: ${{ secrets.DOCKERHUB_TOKEN }}
60-
- name: Build and push Docker image
60+
- name: Build and push AMD64 Docker image
6161
uses: docker/build-push-action@v5
6262
with:
63-
platforms: linux/amd64,linux/arm64
63+
platforms: linux/amd64
6464
push: true
6565
tags: |
66-
cybuerg/cfspeedtest:${{ github.ref_name }}
67-
cybuerg/cfspeedtest:latest
66+
cybuerg/cfspeedtest:${{ github.ref_name }}-amd64
67+
cybuerg/cfspeedtest:latest-amd64
68+
69+
docker-build-arm64:
70+
needs: [create-release, upload-assets]
71+
runs-on: ubuntu-24.04-arm
72+
steps:
73+
- uses: actions/checkout@v4
74+
- name: Log in to DockerHub
75+
uses: docker/login-action@v3
76+
with:
77+
username: ${{ secrets.DOCKERHUB_USERNAME }}
78+
password: ${{ secrets.DOCKERHUB_TOKEN }}
79+
- name: Build and push ARM64 Docker image
80+
run: |
81+
docker build --platform linux/arm64 -t cybuerg/cfspeedtest:${{ github.ref_name }}-arm64 -t cybuerg/cfspeedtest:latest-arm64 .
82+
docker push cybuerg/cfspeedtest:${{ github.ref_name }}-arm64
83+
docker push cybuerg/cfspeedtest:latest-arm64
84+
85+
docker-create-manifest:
86+
needs: [docker-build-amd64, docker-build-arm64]
87+
runs-on: ubuntu-latest
88+
steps:
89+
- name: Log in to DockerHub
90+
uses: docker/login-action@v3
91+
with:
92+
username: ${{ secrets.DOCKERHUB_USERNAME }}
93+
password: ${{ secrets.DOCKERHUB_TOKEN }}
94+
- name: Create and push multi-arch manifest
95+
run: |
96+
# Create manifest for versioned tag
97+
docker manifest create cybuerg/cfspeedtest:${{ github.ref_name }} \
98+
cybuerg/cfspeedtest:${{ github.ref_name }}-amd64 \
99+
cybuerg/cfspeedtest:${{ github.ref_name }}-arm64
100+
docker manifest push cybuerg/cfspeedtest:${{ github.ref_name }}
101+
102+
# Create manifest for latest tag
103+
docker manifest create cybuerg/cfspeedtest:latest \
104+
cybuerg/cfspeedtest:latest-amd64 \
105+
cybuerg/cfspeedtest:latest-arm64
106+
docker manifest push cybuerg/cfspeedtest:latest

0 commit comments

Comments
 (0)