name: Create Release

on:
  push:
    tags:
      - 'v*'

jobs:
  ci:
    name: CI
    uses: ./.github/workflows/ci.yml
    with:
      attest-package: "true"

  docs:
    name: Verify Docs Build
    uses: beeware/.github/.github/workflows/docs-build-verify.yml@main
    secrets: inherit
    with:
      project-name: "briefcase"
      project-version: ${{ github.ref_name }}

  release:
    name: Create Release
    needs: [ ci, docs ]
    runs-on: ubuntu-latest
    permissions:
      contents: write
      # This permission is required for trusted publishing.
      id-token: write
    steps:
      - name: Set build variables
        run: |
          echo "VERSION=${GITHUB_REF_NAME#v}" | tee -a $GITHUB_ENV

      - name: Set up Python
        uses: actions/setup-python@v5.6.0
        with:
          python-version: "3.x"

      - name: Get packages
        uses: actions/download-artifact@v5.0.0
        with:
          name: ${{ needs.ci.outputs.artifact-name }}
          path: dist

      - name: Purge non-release packages
        run: rm -rf dist/x-*

      - name: Install packages
        run: pip install dist/*.whl

      - name: Check version number
        # Check that the setuptools_scm-generated version number is still the same when
        # installed from a wheel with setuptools_scm not present.
        run: |
          set -x
          test $(briefcase --version) = $VERSION

      - name: Create release
        uses: ncipollo/release-action@v1.18.0
        with:
          name: ${{ env.VERSION }}
          draft: true
          artifacts: dist/${{ github.event.repository.name }}*
          artifactErrorsFailBuild: true

      - name: Publish release to Test PyPI
        uses: pypa/gh-action-pypi-publish@release/v1
        with:
          repository-url: https://test.pypi.org/legacy/
