Skip to content

Commit a022bad

Browse files
refactor: Improve multi-arch build caching and manifest creation
1 parent dce9f04 commit a022bad

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

.github/workflows/CI.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ jobs:
5151
tags: |
5252
cybuerg/cfspeedtest:${{ github.sha }}-amd64
5353
cache-from: type=local,src=/tmp/.buildx-cache
54-
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
54+
cache-to: type=local,dest=/tmp/.buildx-cache-amd64,mode=max
5555
outputs: type=docker,dest=/tmp/docker-image-amd64.tar
5656

5757
- name: Build Docker image for arm64
@@ -62,10 +62,13 @@ jobs:
6262
tags: |
6363
cybuerg/cfspeedtest:${{ github.sha }}-arm64
6464
cache-from: type=local,src=/tmp/.buildx-cache
65-
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
65+
cache-to: type=local,dest=/tmp/.buildx-cache-arm64,mode=max
6666
outputs: type=docker,dest=/tmp/docker-image-arm64.tar
67-
- name: Move cache
67+
- name: Merge and move cache
6868
run: |
69+
mkdir -p /tmp/.buildx-cache-new
70+
cp -r /tmp/.buildx-cache-amd64/* /tmp/.buildx-cache-new/ || true
71+
cp -r /tmp/.buildx-cache-arm64/* /tmp/.buildx-cache-new/ || true
6972
rm -rf /tmp/.buildx-cache
7073
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
7174
- name: Upload Docker images as artifacts

.github/workflows/release.yaml

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,43 @@ jobs:
6464
with:
6565
username: ${{ secrets.DOCKERHUB_USERNAME }}
6666
password: ${{ secrets.DOCKERHUB_TOKEN }}
67-
- name: Build and push Docker image
67+
- name: Build and push Docker image for amd64
6868
uses: docker/build-push-action@v5
6969
with:
70-
platforms: linux/amd64,linux/arm64
70+
platforms: linux/amd64
7171
push: true
7272
tags: |
73-
cybuerg/cfspeedtest:${{ github.ref_name }}
74-
cybuerg/cfspeedtest:latest
73+
cybuerg/cfspeedtest:${{ github.ref_name }}-amd64
74+
cybuerg/cfspeedtest:latest-amd64
7575
cache-from: type=local,src=/tmp/.buildx-cache
76-
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
77-
- name: Move cache
76+
cache-to: type=local,dest=/tmp/.buildx-cache-amd64,mode=max
77+
78+
- name: Build and push Docker image for arm64
79+
uses: docker/build-push-action@v5
80+
with:
81+
platforms: linux/arm64
82+
push: true
83+
tags: |
84+
cybuerg/cfspeedtest:${{ github.ref_name }}-arm64
85+
cybuerg/cfspeedtest:latest-arm64
86+
cache-from: type=local,src=/tmp/.buildx-cache
87+
cache-to: type=local,dest=/tmp/.buildx-cache-arm64,mode=max
88+
89+
- name: Create and push multi-platform manifest
90+
run: |
91+
docker manifest create cybuerg/cfspeedtest:${{ github.ref_name }} \
92+
cybuerg/cfspeedtest:${{ github.ref_name }}-amd64 \
93+
cybuerg/cfspeedtest:${{ github.ref_name }}-arm64
94+
docker manifest create cybuerg/cfspeedtest:latest \
95+
cybuerg/cfspeedtest:latest-amd64 \
96+
cybuerg/cfspeedtest:latest-arm64
97+
docker manifest push cybuerg/cfspeedtest:${{ github.ref_name }}
98+
docker manifest push cybuerg/cfspeedtest:latest
99+
100+
- name: Merge and move cache
78101
run: |
102+
mkdir -p /tmp/.buildx-cache-new
103+
cp -r /tmp/.buildx-cache-amd64/* /tmp/.buildx-cache-new/ || true
104+
cp -r /tmp/.buildx-cache-arm64/* /tmp/.buildx-cache-new/ || true
79105
rm -rf /tmp/.buildx-cache
80106
mv /tmp/.buildx-cache-new /tmp/.buildx-cache

0 commit comments

Comments
 (0)