name: Publish Docker images on: push: branches: - master release: types: [published] jobs: build-and-push: name: Build and Push runs-on: ubuntu-latest strategy: matrix: platform: [linux/amd64, linux/arm64] permissions: contents: read packages: write steps: - name: Checkout uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Extract version id: version run: | VERSION=$(grep '^version:' shard.yml | cut -d ' ' -f 2) echo "version=$VERSION" >> $GITHUB_OUTPUT - name: Build and push uses: docker/build-push-action@v5 with: context: . platforms: ${{ matrix.platform }} push: true tags: | sjdonado/bit:latest-${{ contains(matrix.platform, 'amd64') && 'amd64' || 'arm64' }} ${{ github.event_name == 'release' && format('sjdonado/bit:{0}-{1}', steps.version.outputs.version, contains(matrix.platform, 'amd64') && 'amd64' || 'arm64') || '' }} cache-from: type=gha cache-to: type=gha,mode=max