Skip to content

Release from GitHub Actions only - #5

Draft
terapyon wants to merge 4 commits into
mainfrom
release-in-actions
Draft

terapyon wants to merge 4 commits into
mainfrom
release-in-actions

Conversation

@terapyon

Copy link
Copy Markdown
Member

No description provided.

terapyon and others added 4 commits October 20, 2026 20:58
The release is now one workflow, started by hand with the version
(Actions, "Release", "Run workflow" on main), the same as in
c2.splitter.icu:

- prepare checks the version with .github/scripts/release.py, writes the
  news fragments into CHANGELOG.md with towncrier, sets the version,
  commits "Preparing release <version>" and tags it; push-release pushes
  both from a git bundle.
- test runs plone-package.yml on that commit (every checkout there, the
  jar rebuild included, now takes the ref input), and build builds and
  checks the sdist and the wheel (twine, check-manifest, the jar in the
  wheel).
- publish uploads to PyPI with Trusted Publishing after the approval of
  the pypi environment, skipping files that are there already, so that a
  re-run after a partial upload works.
- github-release signs the files with Sigstore and makes the GitHub
  Release; build tells whether the version is a pre-release.
- development sets the next development version and commits it;
  push-development pushes it, unless main has moved.

Only push-release and push-development can write, and they run nothing
but checkout, download-artifact and git. All jobs run on ubuntu-24.04 with
uv 0.11.32.

zest.releaser is no longer used: its settings and the release extra are
removed. The test extra gets packaging and, on Python 3.10, tomli, which
tests/test_release_script.py needs to import the script; ruff and mypy
check .github/scripts too. AGENTS.md describes the new steps, what to do
when a release fails, and the settings needed once (the pypi environment
has no deployment branch policy, so main can deploy to it).

The script and its 64 tests are the ones of c2.splitter.icu; the
towncrier types are the same. Checks: tox (ruff, mypy and 13 environments,
117 passed each, with C2_TRANSFORM_MSOFFICE_REQUIRE_JAVA=1 and
UV_FROZEN=1), check-manifest 0.51, actionlint 0, zizmor --offline 0
(1 ignored). Mutations: renaming the "tests" fragment type in
pyproject.toml fails test_fragment_types_of_this_package; not counting up
the pre-release number fails 4 tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The same change as in c2.splitter.icu.

github-release ran the Sigstore action with contents: write. Signing is
now a job of its own with contents: read and id-token: write, and
github-release runs only actions/download-artifact and gh; the build job
takes the notes from CHANGELOG.md of the release commit and hands them
over as an artifact.

push-release and push-development now push a bundle only if it is one
commit with one parent, the expected one, and changes only the expected
files: pyproject.toml, CHANGELOG.md and removed news fragments for the
release commit, pyproject.toml for the development commit. The file
filters accept the commits that released 2.0.0b1 (03da756 and 5ecb92e)
and reject a removed news/.gitkeep, a changed jar and an added fragment.

AGENTS.md describes the sign job and the checks, and says to compare the
sha256 of the files on PyPI with the artifact of the run before going on
after a partial upload.

Checks: tox (ruff, mypy and 13 environments, 117 passed each), check-manifest
0.51, actionlint 0, zizmor --offline 0 (1 ignored).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
uv 0.13.4 removes the emSign root CA from the certificates that it
bundles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
setup-uv v10.0.1 knows no checksum for uv 0.13.4 and installs it
without checking, so give the sha256 of the x86_64 Linux tarball.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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