name: Build and push multi-arch DocsGPT Docker image on: workflow_dispatch: push: branches: - main jobs: build: if: github.repository == 'arc53/DocsGPT' strategy: matrix: include: - platform: linux/amd64 runner: ubuntu-latest suffix: amd64 - platform: linux/arm64 runner: ubuntu-24.04-arm suffix: arm64 runs-on: ${{ matrix.runner }} permissions: contents: read packages: write steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: driver: docker-container install: true - name: Login to DockerHub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to ghcr.io uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push platform-specific images uses: docker/build-push-action@v6 with: file: './application/Dockerfile' platforms: ${{ matrix.platform }} context: ./application push: true tags: | ${{ secrets.DOCKER_USERNAME }}/docsgpt:develop-${{ matrix.suffix }} ghcr.io/${{ github.repository_owner }}/docsgpt:develop-${{ matrix.suffix }} provenance: false sbom: false cache-from: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/docsgpt:develop cache-to: type=inline manifest: if: github.repository == 'arc53/DocsGPT' needs: build runs-on: ubuntu-latest permissions: packages: write steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: driver: docker-container install: true - name: Login to DockerHub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to ghcr.io uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Create and push manifest for DockerHub run: | docker manifest create ${{ secrets.DOCKER_USERNAME }}/docsgpt:develop \ --amend ${{ secrets.DOCKER_USERNAME }}/docsgpt:develop-amd64 \ --amend ${{ secrets.DOCKER_USERNAME }}/docsgpt:develop-arm64 docker manifest push ${{ secrets.DOCKER_USERNAME }}/docsgpt:develop - name: Create and push manifest for ghcr.io run: | docker manifest create ghcr.io/${{ github.repository_owner }}/docsgpt:develop \ --amend ghcr.io/${{ github.repository_owner }}/docsgpt:develop-amd64 \ --amend ghcr.io/${{ github.repository_owner }}/docsgpt:develop-arm64 docker manifest push ghcr.io/${{ github.repository_owner }}/docsgpt:develop