name: Docker Build on: workflow_dispatch: jobs: build: strategy: matrix: config: - {arch: 'arm64'} runs-on: ${{ matrix.config.arch == 'arm64' && 'ubuntu-arm64' || 'ubuntu-amd64' }} steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ vars.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and Push Docker images for all Container Registries uses: docker/build-push-action@v6 with: tags: ${{ vars.DOCKERHUB_REPO }}:latest-${{matrix.config.arch}} file: Dockerfile push: true merge-docker-manifest: runs-on: ubuntu-latest needs: build steps: - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ vars.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Create and push manifest images uses: Noelware/docker-manifest-action@master # or use a pinned version in the Releases tab with: inputs: ${{ vars.DOCKERHUB_REPO }}:latest tags: ${{ vars.DOCKERHUB_REPO }}:latest-arm64 push: true