# TP12 partie 5 : workflow de publication signée à compléter.
# À copier dans .github/workflows/release.yml du dépôt contact-api (TP8/TP9).
name: release

on:
  push:
    tags: ["v*.*.*"]

permissions:
  contents: write # attacher le SBOM à la release GitHub
  packages: write # pousser dans ghcr.io
  id-token: write # obtenir un jeton OIDC : signature Cosign keyless + attestations
  attestations: write

env:
  IMAGE: ghcr.io/${{ github.repository }}

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7 # TODO : épingler par SHA (TP10)

      - uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - id: build
        uses: docker/build-push-action@v6
        with:
          push: true
          tags: ${{ env.IMAGE }}:${{ github.ref_name }}

      # TODO : générer un SBOM SPDX de l'image avec anchore/sbom-action (fichier sbom.spdx.json)

      # TODO : installer Cosign (sigstore/cosign-installer) puis signer en mode keyless :
      #        cosign sign --yes ${{ env.IMAGE }}@${{ steps.build.outputs.digest }}

      # TODO : attestation de provenance avec actions/attest-build-provenance
      #        (subject-name: ${{ env.IMAGE }}, subject-digest: ${{ steps.build.outputs.digest }}, push-to-registry: true)

      # TODO : attacher sbom.spdx.json à la release GitHub (gh release create / upload)
