name: Release # Runs on every push to main. # release-please analyses conventional commits since the last release and either: # • creates/updates a "Release PR" that bumps pyproject.toml + CHANGELOG.md, or # • (when that PR is merged) tags the repo and creates a GitHub Release. # Only when a GitHub Release is actually created does the publish job run. on: push: branches: - main permissions: contents: write pull-requests: write packages: write jobs: release-please: runs-on: ubuntu-latest outputs: release_created: ${{ steps.release.outputs.release_created }} tag_name: ${{ steps.release.outputs.tag_name }} steps: - uses: googleapis/release-please-action@v4 id: release with: release-type: python publish: needs: release-please if: needs.release-please.outputs.release_created == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to GHCR uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Docker metadata id: meta uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository }} tags: | # semver tag → ghcr.io/…/steward:1.2.3 type=raw,value=${{ needs.release-please.outputs.tag_name }} # always push latest on a real release type=raw,value=latest - name: Build and push uses: docker/build-push-action@v7 with: context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }}