Skip to content

Commit 3eb83ea

Browse files
committed
Split build for ARM and AMD runners
1 parent cfc751a commit 3eb83ea

File tree

3 files changed

+203
-16
lines changed

3 files changed

+203
-16
lines changed

.github/workflows/build-latest-release.yaml

Lines changed: 76 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@ on:
66
release:
77
types: [created]
88

9+
env:
10+
IMAGE_NAME: sourcebans
11+
912
jobs:
10-
build:
13+
build-amd64:
1114
runs-on: ubuntu-24.04
1215
steps:
1316
- name: Set latest release tag
@@ -31,8 +34,40 @@ jobs:
3134
username: ${{ secrets.DOCKERHUB_USERNAME }}
3235
password: ${{ secrets.DOCKERHUB_TOKEN }}
3336

34-
- name: Set up QEMU
35-
uses: docker/setup-qemu-action@v3
37+
- name: Set up Docker Buildx
38+
uses: docker/setup-buildx-action@v3
39+
40+
- name: Build and push
41+
uses: docker/build-push-action@v6
42+
with:
43+
context: .
44+
file: ./Dockerfile
45+
push: true
46+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.RELEASE_TAG }}-amd64, ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest-amd64, ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ github.run_id }}-amd64
47+
48+
build-arm64:
49+
runs-on: ubuntu-24.04-arm
50+
steps:
51+
- name: Set latest release tag
52+
if: github.event_name != 'release'
53+
run: |
54+
echo "RELEASE_TAG=$(curl https://api.github.com/repos/crinis/sourcebans-docker/releases/latest -s | jq -r ".tag_name")" >> $GITHUB_ENV
55+
56+
- name: Set current release tag
57+
if: github.event_name == 'release'
58+
run: |
59+
echo "RELEASE_TAG=${{ github.event.release.tag_name }}" >> $GITHUB_ENV
60+
61+
- name: Checkout
62+
uses: actions/checkout@v3
63+
with:
64+
ref: ${{ env.RELEASE_TAG }}
65+
66+
- name: Login to Docker Hub
67+
uses: docker/login-action@v3
68+
with:
69+
username: ${{ secrets.DOCKERHUB_USERNAME }}
70+
password: ${{ secrets.DOCKERHUB_TOKEN }}
3671

3772
- name: Set up Docker Buildx
3873
uses: docker/setup-buildx-action@v3
@@ -43,5 +78,41 @@ jobs:
4378
context: .
4479
file: ./Dockerfile
4580
push: true
46-
tags: ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:${{ env.RELEASE_TAG }}, ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:latest, ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:${{ github.run_id }}
47-
platforms: linux/amd64, linux/arm64
81+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.RELEASE_TAG }}-arm64, ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest-arm64, ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ github.run_id }}-arm64
82+
83+
create-manifests:
84+
runs-on: ubuntu-24.04
85+
needs: [build-amd64, build-arm64]
86+
steps:
87+
- name: Checkout
88+
uses: actions/checkout@v3
89+
90+
- name: Login to Docker Hub
91+
uses: docker/login-action@v3
92+
with:
93+
username: ${{ secrets.DOCKERHUB_USERNAME }}
94+
password: ${{ secrets.DOCKERHUB_TOKEN }}
95+
96+
- name: Set up QEMU
97+
uses: docker/setup-qemu-action@v3
98+
99+
- name: Create manifest for tag ${{ env.RELEASE_TAG }} and push
100+
run: |
101+
docker buildx imagetools create \
102+
-t ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.RELEASE_TAG }} \
103+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.RELEASE_TAG }}-amd64 \
104+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.RELEASE_TAG }}-arm64
105+
106+
- name: Create latest manifest and push
107+
run: |
108+
docker buildx imagetools create \
109+
-t ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest \
110+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest-amd64 \
111+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest-arm64
112+
113+
- name: Create manifest for run ID and push
114+
run: |
115+
docker buildx imagetools create \
116+
-t ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ github.run_id }} \
117+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ github.run_id }}-amd64 \
118+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ github.run_id }}-arm64

.github/workflows/build-sb-dev-branch.yaml

Lines changed: 59 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ on:
88
branches:
99
- "master"
1010

11+
env:
12+
IMAGE_NAME: sourcebans
13+
1114
jobs:
12-
build:
15+
build-amd64:
1316
runs-on: ubuntu-24.04
1417
steps:
1518
- name: Checkout
@@ -21,8 +24,30 @@ jobs:
2124
username: ${{ secrets.DOCKERHUB_USERNAME }}
2225
password: ${{ secrets.DOCKERHUB_TOKEN }}
2326

24-
- name: Set up QEMU
25-
uses: docker/setup-qemu-action@v3
27+
- name: Set up Docker Buildx
28+
uses: docker/setup-buildx-action@v3
29+
30+
- name: Build and push
31+
uses: docker/build-push-action@v6
32+
with:
33+
context: .
34+
file: ./Dockerfile
35+
push: true
36+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-dev-amd64, ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-dev-${{ github.run_id }}-amd64
37+
build-args: |
38+
CHECKOUT=php81
39+
40+
build-arm64:
41+
runs-on: ubuntu-24.04-arm
42+
steps:
43+
- name: Checkout
44+
uses: actions/checkout@v3
45+
46+
- name: Login to Docker Hub
47+
uses: docker/login-action@v3
48+
with:
49+
username: ${{ secrets.DOCKERHUB_USERNAME }}
50+
password: ${{ secrets.DOCKERHUB_TOKEN }}
2651

2752
- name: Set up Docker Buildx
2853
uses: docker/setup-buildx-action@v3
@@ -33,7 +58,36 @@ jobs:
3358
context: .
3459
file: ./Dockerfile
3560
push: true
36-
tags: ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-dev, ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-dev-${{ github.run_id }}
61+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-dev-arm64, ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-dev-${{ github.run_id }}-arm64
3762
build-args: |
3863
CHECKOUT=php81
39-
platforms: linux/amd64, linux/arm64
64+
65+
create-manifests:
66+
runs-on: ubuntu-24.04
67+
needs: [build-amd64, build-arm64]
68+
steps:
69+
- name: Checkout
70+
uses: actions/checkout@v3
71+
72+
- name: Login to Docker Hub
73+
uses: docker/login-action@v3
74+
with:
75+
username: ${{ secrets.DOCKERHUB_USERNAME }}
76+
password: ${{ secrets.DOCKERHUB_TOKEN }}
77+
78+
- name: Set up QEMU
79+
uses: docker/setup-qemu-action@v3
80+
81+
- name: Create manifest for sb-dev and push
82+
run: |
83+
docker buildx imagetools create \
84+
-t ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-dev \
85+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-dev-amd64 \
86+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-dev-arm64
87+
88+
- name: Create manifest for sb-dev-${{ github.run_id }} and push
89+
run: |
90+
docker buildx imagetools create \
91+
-t ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-dev-${{ github.run_id }} \
92+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-dev-${{ github.run_id }}-amd64 \
93+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-dev-${{ github.run_id }}-arm64

.github/workflows/build-sb-latest-release.yaml

Lines changed: 68 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ on:
99
- "master"
1010

1111
jobs:
12-
build:
13-
runs-on: ubuntu-latest
12+
build-amd64:
13+
runs-on: ubuntu-24.04
1414
steps:
1515
- name: Checkout
1616
uses: actions/checkout@v3
@@ -21,8 +21,34 @@ jobs:
2121
username: ${{ secrets.DOCKERHUB_USERNAME }}
2222
password: ${{ secrets.DOCKERHUB_TOKEN }}
2323

24-
- name: Set up QEMU
25-
uses: docker/setup-qemu-action@v3
24+
- name: Set up Docker Buildx
25+
uses: docker/setup-buildx-action@v3
26+
27+
- name: Get latest Sourcebans release
28+
run: |
29+
echo "SB_TAG=$(curl https://api.github.com/repos/sbpp/sourcebans-pp/releases -s | jq -r ".[].tag_name" | grep '^1\.7\.[0-9]*$' -m1)" >> $GITHUB_ENV
30+
31+
- name: Build and push
32+
uses: docker/build-push-action@v6
33+
with:
34+
context: .
35+
file: ./Dockerfile
36+
push: true
37+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-${{ env.SB_TAG }}-amd64, ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-latest-amd64, ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-${{ github.run_id }}-amd64
38+
build-args: |
39+
CHECKOUT=${{ env.SB_TAG }}
40+
41+
build-arm64:
42+
runs-on: ubuntu-24.04-arm
43+
steps:
44+
- name: Checkout
45+
uses: actions/checkout@v3
46+
47+
- name: Login to Docker Hub
48+
uses: docker/login-action@v3
49+
with:
50+
username: ${{ secrets.DOCKERHUB_USERNAME }}
51+
password: ${{ secrets.DOCKERHUB_TOKEN }}
2652

2753
- name: Set up Docker Buildx
2854
uses: docker/setup-buildx-action@v3
@@ -37,7 +63,43 @@ jobs:
3763
context: .
3864
file: ./Dockerfile
3965
push: true
40-
tags: ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-${{ env.SB_TAG }}, ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-latest, ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-${{ github.run_id }}
66+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-${{ env.SB_TAG }}-arm64, ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-latest-arm64, ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-${{ github.run_id }}-arm64
4167
build-args: |
4268
CHECKOUT=${{ env.SB_TAG }}
43-
platforms: linux/amd64, linux/arm64
69+
70+
create-manifests:
71+
runs-on: ubuntu-latest
72+
needs: [build-amd64, build-arm64]
73+
steps:
74+
- name: Checkout
75+
uses: actions/checkout@v3
76+
77+
- name: Login to Docker Hub
78+
uses: docker/login-action@v3
79+
with:
80+
username: ${{ secrets.DOCKERHUB_USERNAME }}
81+
password: ${{ secrets.DOCKERHUB_TOKEN }}
82+
83+
- name: Set up QEMU
84+
uses: docker/setup-qemu-action@v3
85+
86+
- name: Create manifest for sb-${{ env.SB_TAG }} and push
87+
run: |
88+
docker buildx imagetools create \
89+
-t ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-${{ env.SB_TAG }} \
90+
${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-${{ env.SB_TAG }}-amd64 \
91+
${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-${{ env.SB_TAG }}-arm64
92+
93+
- name: Create latest manifest and push
94+
run: |
95+
docker buildx imagetools create \
96+
-t ${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-latest \
97+
${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-latest-amd64 \
98+
${{ secrets.DOCKERHUB_USERNAME }}/sourcebans:sb-latest-arm64
99+
100+
- name: Create manifest for run ID and push
101+
run: |
102+
docker buildx imagetools create \
103+
-t ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-${{ github.run_id }} \
104+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-${{ github.run_id }}-amd64 \
105+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:sb-${{ github.run_id }}-arm64

0 commit comments

Comments
 (0)