Skip to content

Release tooling: TabPFN-pattern pipeline + Towncrier#278

Open
adrian-prior wants to merge 3 commits intomainfrom
release-tooling
Open

Release tooling: TabPFN-pattern pipeline + Towncrier#278
adrian-prior wants to merge 3 commits intomainfrom
release-tooling

Conversation

@adrian-prior
Copy link
Copy Markdown
Collaborator

@adrian-prior adrian-prior commented Apr 27, 2026

Summary

Ports TabPFN's complete release stack — four workflows + Towncrier — to tabpfn-extensions. After this lands, the release flow becomes: maintainer clicks Run workflow on Create Release PR, types a version, and the rest is automated through to PyPI and a GitHub Release. PyPI publish is gated by manual approval at the pypi environment.

This supersedes the earlier draft of this PR (which had a smaller, two-file release-publish setup).

Files

File Purpose
.github/workflows/release-create-pr.yml workflow_dispatch → opens release/v* PR with version bump and Towncrier-assembled CHANGELOG
.github/workflows/release-tag-on-merge.yml Merge of release/v* PR → auto-tags the merge commit
.github/workflows/release-publish.yml Tag push → build, TestPyPI + install-verify, gated PyPI publish, GitHub Release
.github/workflows/check-changelog.yml Enforces every PR has a changelog/<pr#>.<category>.md fragment
.github/workflows/pull_request.yml Adds a build_verify job (uv build + twine check)
pyproject.toml Adds [tool.towncrier] with 5 categories: breaking, added, changed, fixed, deprecated
CHANGELOG.md Drops empty Added/Changed subsections under [Unreleased] (Towncrier inserts release sections directly after the heading)
changelog/README.md Contributor docs for the per-PR fragment convention

Future release flow

Click "Run workflow" on `Create Release PR` → type version + base SHA
   → auto-PR opens with version bump + Towncrier-built CHANGELOG
Get LGTM, merge → auto-tag fires
Tag push → TestPyPI + verify
   → pause at `pypi` env for your approval → PyPI publish + GitHub Release

@adrian-prior adrian-prior requested a review from a team as a code owner April 27, 2026 19:29
@adrian-prior adrian-prior requested review from klemens-floege and removed request for a team April 27, 2026 19:29
@chatgpt-codex-connector
Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@adrian-prior adrian-prior marked this pull request as draft April 27, 2026 19:29
@adrian-prior adrian-prior requested review from bejaeger and removed request for bejaeger and klemens-floege April 27, 2026 19:29
Ports TabPFN's complete release stack to tabpfn-extensions:

- release-create-pr.yml: workflow_dispatch -> opens release/v* PR with
  version bump and Towncrier-assembled CHANGELOG.
- release-tag-on-merge.yml: merge of release/v* -> auto-tags merge
  commit, triggering release-publish.yml.
- release-publish.yml: tag push -> build, TestPyPI publish + install
  verify, gated PyPI publish (manual approval at `pypi` env), auto
  GitHub Release with notes extracted from CHANGELOG.
- check-changelog.yml: enforces every PR adds a changelog fragment via
  scientific-python/action-towncrier-changelog.
- pull_request.yml: adds a build_verify job that runs `uv build` and
  `twine check` so packaging regressions fail PR CI.
- pyproject.toml: adds [tool.towncrier] with 5 categories matching
  TabPFN (breaking, added, changed, fixed, deprecated).
- CHANGELOG.md: drops the empty Added/Changed subsections under
  [Unreleased] (Towncrier inserts the new release section directly
  after the Unreleased heading at release time).
- changelog/README.md: contributor docs for the per-PR fragment
  convention.

Trusted Publishing replaces all API tokens. No secrets are required for
publish steps. The tag-on-merge step uses RELEASE_BOT_TOKEN (a fine
scoped PAT) because the default GITHUB_TOKEN can't push tags that
trigger another workflow.
@adrian-prior adrian-prior changed the title Release tooling: trusted-publishing PyPI workflows + build-verify CI job Release tooling: TabPFN-pattern pipeline + Towncrier Apr 29, 2026
Bootstrap step: this PR adds check-changelog.yml, which now demands a
fragment for every PR including this one.
scientific-python/action-towncrier-changelog requires this marker
section in pyproject.toml to know the project opts into the check.
Without it the action fails with 'Missing [tool.changelog-bot.towncrier_changelog]
section.' Matches TabPFN's setup.
@adrian-prior adrian-prior requested a review from safaricd April 29, 2026 10:28
@adrian-prior adrian-prior self-assigned this Apr 29, 2026
@adrian-prior adrian-prior marked this pull request as ready for review April 29, 2026 10:29
@chatgpt-codex-connector
Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant