@@ -26,7 +26,6 @@ concurrency:
2626env :
2727 container_image : " github-actions-runner"
2828 container_image_build_context : " src"
29- container_image_build_platforms : " linux/amd64,linux/arm64"
3029 container_image_build_dockerfile : " src/Dockerfile"
3130 container_image_repository_dockerhub : " emberstack"
3231 container_image_repository_ghcr : " ghcr.io/emberstack"
@@ -116,7 +115,14 @@ jobs:
116115 name : build
117116 if : ${{ needs.discovery.outputs.build == 'true' }}
118117 needs : [discovery]
119- runs-on : ubuntu-latest
118+ strategy :
119+ matrix :
120+ include :
121+ - runner : ubuntu-latest
122+ platform : linux/amd64
123+ - runner : ubuntu-24.04-arm
124+ platform : linux/arm64
125+ runs-on : ${{ matrix.runner }}
120126 env :
121127 build : ${{ needs.discovery.outputs.build }}
122128 build_push : ${{ needs.discovery.outputs.build_push }}
@@ -143,14 +149,8 @@ jobs:
143149 username : ${{ secrets.ES_DOCKERHUB_USERNAME }}
144150 password : ${{ secrets.ES_DOCKERHUB_PAT }}
145151
146- - name : tools - docker - register QEMU
147- run : |
148- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
149-
150152 - name : tools - docker - setup buildx
151153 uses : docker/setup-buildx-action@v3
152- with :
153- driver : docker-container # REQUIRED for multi-platform builds
154154
155155 - name : docker - build and push
156156 uses : docker/build-push-action@v6
@@ -161,21 +161,54 @@ jobs:
161161 BUILD_CONFIGURATION=${{ env.build_configuration }}
162162 push : ${{ env.build_push == 'true' }}
163163 provenance : false
164- platforms : ${{ env.container_image_build_platforms }}
164+ platforms : ${{ matrix.platform }}
165165 labels : |
166166 org.opencontainers.image.source=https://github.com/${{ github.repository }}
167167 org.opencontainers.image.url=https://github.com/${{ github.repository }}
168168 org.opencontainers.image.vendor=https://github.com/${{ github.repository_owner }}
169169 org.opencontainers.image.version=${{ env.gitVersion_SemVer }}
170170 org.opencontainers.image.revision=${{ github.sha }}
171171 tags : |
172- ${{ env.container_image_repository_dockerhub }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }}
173- ${{ env.container_image_repository_ghcr }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }}
172+ ${{ env.container_image_repository_dockerhub }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }}-${{ matrix.platform == 'linux/amd64' && 'amd64' || 'arm64' }}
173+ ${{ env.container_image_repository_ghcr }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }}-${{ matrix.platform == 'linux/amd64' && 'amd64' || 'arm64' }}
174+
175+ manifest :
176+ name : create multi-arch manifest
177+ if : ${{ needs.discovery.outputs.build_push == 'true' }}
178+ needs : [discovery, build]
179+ runs-on : ubuntu-latest
180+ env :
181+ gitVersion_SemVer : ${{ needs.discovery.outputs.gitVersion_SemVer }}
182+ steps :
183+ - name : tools - docker - login ghcr.io
184+ uses : docker/login-action@v3
185+ with :
186+ registry : ghcr.io
187+ username : ${{ github.actor }}
188+ password : ${{ secrets.ES_GITHUB_PAT }}
189+
190+ - name : tools - docker - login docker.io
191+ uses : docker/login-action@v3
192+ with :
193+ registry : docker.io
194+ username : ${{ secrets.ES_DOCKERHUB_USERNAME }}
195+ password : ${{ secrets.ES_DOCKERHUB_PAT }}
196+
197+ - name : tools - docker - setup buildx
198+ uses : docker/setup-buildx-action@v3
199+
200+ - name : docker - create and push multi-arch manifest
201+ run : |
202+ docker buildx imagetools create \
203+ --tag ${{ env.container_image_repository_dockerhub }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }} \
204+ --tag ${{ env.container_image_repository_ghcr }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }} \
205+ ${{ env.container_image_repository_ghcr }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }}-amd64 \
206+ ${{ env.container_image_repository_ghcr }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }}-arm64
174207
175208 release :
176209 name : release
177210 if : ${{ needs.discovery.outputs.release == 'true' && github.ref == 'refs/heads/main' }}
178- needs : [discovery, build ]
211+ needs : [discovery, manifest ]
179212 runs-on : ubuntu-latest
180213 env :
181214 gitVersion_SemVer : ${{ needs.discovery.outputs.gitVersion_SemVer }}
@@ -203,8 +236,6 @@ jobs:
203236 docker buildx imagetools create \
204237 --tag ${{ env.container_image_repository_dockerhub }}/${{ env.container_image }}:latest \
205238 --tag ${{ env.container_image_repository_ghcr }}/${{ env.container_image }}:latest \
206- --tag ${{ env.container_image_repository_dockerhub }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }} \
207- --tag ${{ env.container_image_repository_ghcr }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }} \
208239 ${{ env.container_image_repository_ghcr }}/${{ env.container_image }}:${{ env.gitVersion_SemVer }}
209240
210241 - name : github - release - create
0 commit comments