@@ -18,19 +18,25 @@ jobs:
1818 - name : Checkout repository
1919 uses : actions/checkout@v6
2020
21+ # Add support for more platforms on release builds.
22+ - name : Set up QEMU
23+ if : startsWith(github.ref, 'refs/tags/') || github.event_name == 'release'
24+ uses : docker/setup-qemu-action@v4
25+
2126 - name : Set up Docker Buildx
22- uses : docker/setup-buildx-action@v3
27+ uses : docker/setup-buildx-action@v4
2328
2429 - name : Extract GHCR metadata
2530 id : ghcr_meta
26- if : github.event_name == 'push' && github.repository == 'koreader/koreader-sync-server'
31+ if : ( github.event_name == 'push' || github.event_name == 'release') && github.repository == 'koreader/koreader-sync-server'
2732 uses : docker/metadata-action@v5
2833 with :
2934 images : ghcr.io/${{ github.repository_owner }}/kosync
3035 tags : |
3136 type=raw,value=latest,enable={{is_default_branch}}
3237 type=ref,event=tag
3338 type=sha,prefix=sha-
39+ type=raw,value=${{ github.event.release.tag_name }},enable=${{ github.event_name == 'release' }}
3440
3541 - name : Extract Docker Hub metadata
3642 id : dockerhub_meta
@@ -66,15 +72,15 @@ jobs:
6672 docker exec kosync-test /app/koreader-sync-server/scripts/healthcheck.sh
6773
6874 - name : Log in to GitHub Container Registry
69- if : github.event_name == 'push' && github.repository == 'koreader/koreader-sync-server'
75+ if : ( github.event_name == 'push' || github.event_name == 'release') && github.repository == 'koreader/koreader-sync-server'
7076 uses : docker/login-action@v4
7177 with :
7278 registry : ghcr.io
7379 username : ${{ github.actor }}
7480 password : ${{ secrets.GITHUB_TOKEN }}
7581
7682 - name : Push GHCR image
77- if : github.event_name == 'push' && github.repository == 'koreader/koreader-sync-server'
83+ if : github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/') && github.repository == 'koreader/koreader-sync-server'
7884 run : |
7985 while IFS= read -r tag; do
8086 docker tag koreader/kosync:test "$tag"
@@ -90,12 +96,16 @@ jobs:
9096 username : frenzie
9197 password : ${{ secrets.DOCKERHUB_TOKEN }}
9298
93- - name : Push Docker Hub image
99+ - name : Build and push multi-platform release images
94100 if : (startsWith(github.ref, 'refs/tags/') || github.event_name == 'release') && github.repository == 'koreader/koreader-sync-server'
95- run : |
96- while IFS= read -r tag; do
97- docker tag koreader/kosync:test "$tag"
98- docker push "$tag"
99- done <<'EOF'
100- ${{ steps.dockerhub_meta.outputs.tags }}
101- EOF
101+ uses : docker/build-push-action@v5
102+ with :
103+ context : .
104+ push : true
105+ platforms : linux/amd64,linux/arm64
106+ labels : ${{ steps.ghcr_meta.outputs.labels || steps.dockerhub_meta.outputs.labels }}
107+ tags : |
108+ ${{ steps.ghcr_meta.outputs.tags }}
109+ ${{ steps.dockerhub_meta.outputs.tags }}
110+ cache-from : type=gha
111+ cache-to : type=gha,mode=max
0 commit comments