name: Release # Triggered when a version tag is pushed (e.g. v1.0.2). # Creates a GitHub Release marked as "published", which in turn # triggers the build-wheels and publish jobs in CI.yml. on: push: tags: - "v[0-9]+.[0-9]+.[0-9]+" permissions: contents: write jobs: create-release: name: Create GitHub Release runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Extract version from tag id: version run: | VERSION="${GITHUB_REF_NAME#v}" echo "version=$VERSION" >> "$GITHUB_OUTPUT" - name: Extract changelog entry for this version id: changelog env: TAG_NAME: ${{ github.ref_name }} run: | python3 - <<'PY' import re, os, pathlib version = os.environ["TAG_NAME"].lstrip("v") text = pathlib.Path("CHANGELOG.md").read_text(encoding="utf-8") pattern = rf"## \[{re.escape(version)}\].*?\n(.*?)(?=\n## |\Z)" match = re.search(pattern, text, re.DOTALL) body = match.group(1).strip() if match else f"Release {version}" with open(os.environ["GITHUB_OUTPUT"], "a") as f: f.write(f"body<