@@ -31,13 +31,35 @@ jobs:
3131 with :
3232 username : ${{ secrets.DOCKERHUB_USERNAME }}
3333 password : ${{ secrets.DOCKERHUB_TOKEN }}
34+
35+ - name : Set up Docker Buildx
36+ uses : docker/setup-buildx-action@v1
37+
3438 # TODO: Add docker layer caching when GitHub Actions cache is stabilized and works good with "satackey/action-docker-layer-caching@v0.0.11"
3539 - name : Build and push
36- id : docker_build
37- uses : docker/build-push-action@v2
38- with :
39- push : true
40- tags : ${{ env.GH_REPO }}:latest,${{ env.GH_REPO }}:${{ env.RELEASE_VERSION }}
40+ run : |
41+ set -x
42+ export DOCKER_BUILDKIT=1
43+
44+ BASE_IMAGE="${{ env.GH_REPO }}:${{ env.RELEASE_VERSION }}"
45+ LATEST_IMAGE="${{ env.GH_REPO }}:latest"
46+ X86_64_IMAGE="$BASE_IMAGE-x86_64"
47+ AARCH64_IMAGE="$BASE_IMAGE-aarch64"
48+
49+ # build & push Aarch64
50+ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
51+ docker buildx create --name multiarch --driver docker-container --use
52+ ./scripts/build_aarch64_container.sh -t "$AARCH64_IMAGE" --push
53+
54+ # build & push x86_64
55+ docker build -t "$X86_64_IMAGE" .
56+ docker push "$X86_64_IMAGE"
57+
58+ # create manifests for the tag + for 'latest'
59+ docker manifest create "$BASE_IMAGE" "$X86_64_IMAGE" "$AARCH64_IMAGE"
60+ docker manifest push "$BASE_IMAGE"
61+ docker manifest create "$LATEST_IMAGE" "$X86_64_IMAGE" "$AARCH64_IMAGE"
62+ docker manifest push "$LATEST_IMAGE"
4163
4264 - name : Image digest
4365 run : echo ${{ steps.docker_build.outputs.digest }}
0 commit comments