|
93 | 93 | with: |
94 | 94 | fetch-depth: 0 |
95 | 95 |
|
96 | | - - name: Set up QEMU |
97 | | - uses: docker/setup-qemu-action@v3 |
98 | | - |
99 | | - - name: Set up Docker Buildx |
100 | | - uses: docker/setup-buildx-action@v3 |
101 | | - |
102 | 96 | - name: GHCR Login |
103 | 97 | uses: docker/login-action@v3 |
104 | 98 | with: |
@@ -258,19 +252,29 @@ jobs: |
258 | 252 | id: set_platforms |
259 | 253 | run: | |
260 | 254 | NO_ARM64_DIRS="FileInfo" |
261 | | - |
| 255 | +
|
262 | 256 | CURRENT_DIR="${{ matrix.directory }}" |
263 | 257 | # Default to multi-arch |
264 | 258 | PLATFORMS="linux/amd64,linux/arm64" |
265 | | - |
| 259 | +
|
266 | 260 | # Check if CURRENT_DIR is in the NO_ARM64_DIRS list |
267 | 261 | if echo "$NO_ARM64_DIRS" | grep -qw "$CURRENT_DIR"; then |
268 | 262 | echo "Directory '$CURRENT_DIR' is in NO_ARM64_DIRS; limiting to linux/amd64 only." |
269 | 263 | PLATFORMS="linux/amd64" |
270 | 264 | fi |
271 | | - |
| 265 | +
|
272 | 266 | echo "PLATFORMS=$PLATFORMS" >> $GITHUB_ENV |
273 | 267 |
|
| 268 | + # Only install QEMU when we actually build AND arm64 is targeted |
| 269 | + - name: Set up QEMU |
| 270 | + if: steps.check-rebuild.outputs.rebuild == 'true' && contains(env.PLATFORMS, 'linux/arm64') |
| 271 | + uses: docker/setup-qemu-action@v3 |
| 272 | + |
| 273 | + # Buildx is only needed when we build (and for imagetools) |
| 274 | + - name: Set up Docker Buildx |
| 275 | + if: steps.check-rebuild.outputs.rebuild == 'true' |
| 276 | + uses: docker/setup-buildx-action@v3 |
| 277 | + |
274 | 278 | - name: Build and push multi-arch image to GHCR |
275 | 279 | if: steps.check-rebuild.outputs.rebuild == 'true' |
276 | 280 | uses: docker/build-push-action@v6 |
@@ -300,17 +304,18 @@ jobs: |
300 | 304 | org.opencontainers.image.version=${{ env.VERSION }} |
301 | 305 |
|
302 | 306 | - name: Get image digest for Trivy scan |
| 307 | + if: steps.check-rebuild.outputs.rebuild == 'true' |
303 | 308 | id: get-digest |
304 | 309 | run: | |
305 | 310 | # Get the digest of the pushed image using buildx imagetools |
306 | 311 | IMAGE_DIGEST=$(docker buildx imagetools inspect ghcr.io/${{ env.LOWER_REPO_OWNER }}/${{ env.LOWERCASE_NAME }}:${{ env.IMAGE_TAG }} 2>/dev/null | grep "^Digest:" | awk '{print $2}' || echo "") |
307 | | - |
| 312 | +
|
308 | 313 | if [ -n "$IMAGE_DIGEST" ]; then |
309 | 314 | IMAGE_DIGEST="ghcr.io/${{ env.LOWER_REPO_OWNER }}/${{ env.LOWERCASE_NAME }}@$IMAGE_DIGEST" |
310 | 315 | else |
311 | 316 | # Fallback: try docker inspect for RepoDigests |
312 | 317 | IMAGE_DIGEST=$(docker inspect ghcr.io/${{ env.LOWER_REPO_OWNER }}/${{ env.LOWERCASE_NAME }}:${{ env.IMAGE_TAG }} --format='{{index .RepoDigests 0}}' 2>/dev/null || echo "") |
313 | | - |
| 318 | +
|
314 | 319 | if [ -z "$IMAGE_DIGEST" ]; then |
315 | 320 | # Fallback: try to get digest from local images |
316 | 321 | IMAGE_DIGEST=$(docker images --digests ghcr.io/${{ env.LOWER_REPO_OWNER }}/${{ env.LOWERCASE_NAME }} --format "table {{.Repository}}:{{.Tag}}\t{{.Digest}}" | grep ":${{ env.IMAGE_TAG }}" | awk '{print $2}' | head -1) |
@@ -569,12 +574,6 @@ jobs: |
569 | 574 | with: |
570 | 575 | fetch-depth: 0 |
571 | 576 |
|
572 | | - - name: Set up QEMU |
573 | | - uses: docker/setup-qemu-action@v3 |
574 | | - |
575 | | - - name: Set up Docker Buildx |
576 | | - uses: docker/setup-buildx-action@v3 |
577 | | - |
578 | 577 | - name: GHCR Login |
579 | 578 | uses: docker/login-action@v3 |
580 | 579 | with: |
@@ -734,19 +733,29 @@ jobs: |
734 | 733 | id: set_platforms |
735 | 734 | run: | |
736 | 735 | NO_ARM64_DIRS="MSDefenderOffice365" |
737 | | - |
| 736 | +
|
738 | 737 | CURRENT_DIR="${{ matrix.directory }}" |
739 | 738 | # Default to multi-arch |
740 | 739 | PLATFORMS="linux/amd64,linux/arm64" |
741 | | - |
| 740 | +
|
742 | 741 | # Check if CURRENT_DIR is in the NO_ARM64_DIRS list |
743 | 742 | if echo "$NO_ARM64_DIRS" | grep -qw "$CURRENT_DIR"; then |
744 | 743 | echo "Directory '$CURRENT_DIR' is in NO_ARM64_DIRS; limiting to linux/amd64 only." |
745 | 744 | PLATFORMS="linux/amd64" |
746 | 745 | fi |
747 | | - |
| 746 | +
|
748 | 747 | echo "PLATFORMS=$PLATFORMS" >> $GITHUB_ENV |
749 | 748 |
|
| 749 | + # Only install QEMU when we actually build AND arm64 is targeted |
| 750 | + - name: Set up QEMU |
| 751 | + if: steps.check-rebuild.outputs.rebuild == 'true' && contains(env.PLATFORMS, 'linux/arm64') |
| 752 | + uses: docker/setup-qemu-action@v3 |
| 753 | + |
| 754 | + # Buildx is only needed when we build (and for imagetools) |
| 755 | + - name: Set up Docker Buildx |
| 756 | + if: steps.check-rebuild.outputs.rebuild == 'true' |
| 757 | + uses: docker/setup-buildx-action@v3 |
| 758 | + |
750 | 759 | - name: Build and push multi-arch image to GHCR |
751 | 760 | if: steps.check-rebuild.outputs.rebuild == 'true' |
752 | 761 | uses: docker/build-push-action@v6 |
@@ -776,17 +785,18 @@ jobs: |
776 | 785 | org.opencontainers.image.version=${{ env.VERSION }} |
777 | 786 |
|
778 | 787 | - name: Get image digest for Trivy scan |
| 788 | + if: steps.check-rebuild.outputs.rebuild == 'true' |
779 | 789 | id: get-digest-responder |
780 | 790 | run: | |
781 | 791 | # Get the digest of the pushed image using buildx imagetools |
782 | 792 | IMAGE_DIGEST=$(docker buildx imagetools inspect ghcr.io/${{ env.LOWER_REPO_OWNER }}/${{ env.LOWERCASE_NAME }}:${{ env.IMAGE_TAG }} 2>/dev/null | grep "^Digest:" | awk '{print $2}' || echo "") |
783 | | - |
| 793 | +
|
784 | 794 | if [ -n "$IMAGE_DIGEST" ]; then |
785 | 795 | IMAGE_DIGEST="ghcr.io/${{ env.LOWER_REPO_OWNER }}/${{ env.LOWERCASE_NAME }}@$IMAGE_DIGEST" |
786 | 796 | else |
787 | 797 | # Fallback: try docker inspect for RepoDigests |
788 | 798 | IMAGE_DIGEST=$(docker inspect ghcr.io/${{ env.LOWER_REPO_OWNER }}/${{ env.LOWERCASE_NAME }}:${{ env.IMAGE_TAG }} --format='{{index .RepoDigests 0}}' 2>/dev/null || echo "") |
789 | | - |
| 799 | +
|
790 | 800 | if [ -z "$IMAGE_DIGEST" ]; then |
791 | 801 | # Fallback: try to get digest from local images |
792 | 802 | IMAGE_DIGEST=$(docker images --digests ghcr.io/${{ env.LOWER_REPO_OWNER }}/${{ env.LOWERCASE_NAME }} --format "table {{.Repository}}:{{.Tag}}\t{{.Digest}}" | grep ":${{ env.IMAGE_TAG }}" | awk '{print $2}' | head -1) |
|
0 commit comments