diff --git a/.github/workflows/docker-build-devnet.yml b/.github/workflows/docker-build-devnet.yml index 909cf36..eb7f0b9 100644 --- a/.github/workflows/docker-build-devnet.yml +++ b/.github/workflows/docker-build-devnet.yml @@ -1,4 +1,4 @@ -name: Build and Push DevNet Docker Image +name: Build and Push DevNet Docker Image (Multi-Arch 16-Core) on: push: @@ -7,15 +7,20 @@ on: jobs: build: - runs-on: ubuntu-latest + strategy: + matrix: + include: + - arch: amd64 + runner: ubuntu-16-cores # GitHub's 16-core AMD runner + - arch: arm64 + runner: ubuntu-16-cores-arm64 # GitHub's 16-core ARM runner + + runs-on: ${{ matrix.runner }} steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -29,9 +34,28 @@ jobs: uses: docker/build-push-action@v6 with: context: . - platforms: linux/amd64,linux/arm64 # QEMU will emulate arm64 file: Dockerfile.devnet push: true + platforms: linux/${{ matrix.arch }} tags: | - riftresearch/devnet:latest - riftresearch/devnet:${{ github.sha }} + riftresearch/devnet:${{ matrix.arch }} + riftresearch/devnet:${{ github.sha }}-${{ matrix.arch }} + + # Multi-Arch Manifest Creation + manifest: + needs: build + runs-on: ubuntu-latest + steps: + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Create and push multi-arch manifest + run: | + docker manifest create riftresearch/devnet:latest \ + --amend riftresearch/devnet:amd64 \ + --amend riftresearch/devnet:arm64 + docker manifest push riftresearch/devnet:latest +