Repository navigation
Releases: tox-dev/github-workflows
Releases · tox-dev/github-workflows
Release list
6.2.1
Immutable
release. Only release title and notes can be modified.
Changes
validate-newsreads the pull request's current labels from the API, so re-running an older Changelog run after addingskip newspasses instead of failing on the labels the original event carried. Callers grantpull-requests: readto the job (#35) by @gaborbernat.
6.2.0
Immutable
release. Only release title and notes can be modified.
Changes
publish-github-releasecredits first-time contributors on the GitHub Release, taking the list from GitHub's generated notes for the range since the previous tag and placing it above the package and comparison links.prepare-towncrierno longer adds a New Contributors subsection to the changelog (#34) by @gaborbernat.
6.1.0
Immutable
release. Only release title and notes can be modified.
Features
render-release-notestakes oneartifact-urlper line, with matchingartifact-labellines, so a project that publishes several packages lists them all on one row of the GitHub Release. Release bodies now come fromrelease-creator4.3.0, which marks each link with its ecosystem emoji (#32) by @gaborbernat.
6.0.3
Immutable
release. Only release title and notes can be modified.
Bug fixes
- Match release assets by the name GitHub stores, which replaces characters such as spaces with periods. A file named
PyVenv Manage 2-2.4.7-signed.zipuploaded, but its draft stayed unpublished because the check expected the local name (#29) by @gaborbernat.
6.0.2
Immutable
release. Only release title and notes can be modified.
Changes
- Admit the
[tool.nab]per-packageuploaded-prior-toexceptions incooled-prekhook environments, so a hook dependency pinned past the seven-day cutoff installs the same way as the release lock. Before, prepare failed on such a pin (#28) by @gaborbernat.
6.0.1
Immutable
release. Only release title and notes can be modified.
Bug fixes
- Check out the full history in the
validate-python-releasebuild job again, so version tools such as hatch-vcs and setuptools-scm see the release tag. 6.0.0 built0.1.dev1+g<sha>instead of the tagged version (#25) by @gaborbernat.
6.0.0
Immutable
release. Only release title and notes can be modified.
Features
- Every Action and reusable workflow now logs the choices it makes and why, and no longer hides tool output (#23) by @gaborbernat.
- Run each
validate-newscheck only when the pull request touches what it validates: fragment validation when the fragment directory changes, the Towncrier configuration check whentowncrier.tomlor thetool.towncriertable changes, the lock check when apyproject.toml,pylock.toml, rootpylock.*.toml, ornab.tomlchanges, and the lock-removal guard whenpylock.tomlis deleted. Workflow changes no longer trigger the lock check, and every rootpylock.*.tomldoes, whether or not it is the configuredadditional-lock. The fragment requirement for human pull requests still runs on every pull request (#23) by @gaborbernat.
Changes
- Drop the
mainbranch condition from the writer job ofupgrade-release-tools.yaml. The deployment branch rule of therelease-authenvironment still applies (#23) by @gaborbernat. - Drop the
sourcejob of the github-workflows release workflow, which re-checked the tag that started it (#23) by @gaborbernat. - Give every job and step in the shared workflows and Actions a name that starts with an emoji. Jobs of the reusable workflows show up in callers as
<caller job> / <job name>, so required status checks that name them must be updated.publish-jetbrains-marketplacealso recognizes a prior upload step named🚀 Publish signed ZIP, the README's new name for the caller's publishing step (#23) by @gaborbernat. - Make
publish-github-releaseupdate an existing draft's title, notes, and prerelease flag on a rerun instead of failing, use the first Release when several share the tag, and create the draft inpublishmode when none exists. It no longer compares the title, notes, and prerelease flag of an existing Release; the read-after-write retry and the asset name and digest checks stay (#23) by @gaborbernat. - Stop
commit-and-tagfrom requiring a clean working tree with only a staged patch; it commits whatever is staged (#23) by @gaborbernat. - Stop
publish-jetbrains-marketplacefrom inspecting earlierreleaseenvironment deployments for the tag before an upload; the job no longer needs Deployments read access. Stoppublish-post-release-prfrom failing when an open pull request's title, body, or base changed, when several pull requests match, or when a merged pull request lost itsskip newslabel; it re-applies the label instead (#23) by @gaborbernat. - Stop
refresh-release-lockfrom failing inrefreshmode when the regenerated lock targets different environments.checkmode still compares the whole lock (#23) by @gaborbernat. - Stop checking the shape of built artifacts that the release jobs produce themselves.
validate-python-release.yamlno longer requires an emptydistdirectory or exactly one wheel and one sdist at the tag's version, andbuild-python-distributionno longer requires an emptydistdirectory.reconcile-pypi-artifactsno longer rejects an emptydist, an invalid project name, or local files that are hidden, symbolic links, directories, or belong to another release; it compares every file indistwith PyPI (#23) by @gaborbernat. - Stop re-checking files the release jobs produce themselves in the JetBrains Actions.
sign-jetbrains-pluginno longer runsunzip -ton the unsigned or signed ZIP, checks for Java 17 or an existing signed ZIP, runs the signer'sverify, or checks the signed ZIP's type and members.publish-jetbrains-marketplaceno longer runsunzip -t, re-hashes the upload copy, or checks the file types of a downloaded receipt and earlier artifacts (#23) by @gaborbernat. - Stop re-checking the release tag before publishing.
publish-github-releaseno longer requires the remote tag to resolve tocommit, which now only sets the target of a new Release.publish-jetbrains-marketplaceno longer requires the remote tag to targetcommitor fails on an earlier upload of the tag from another commit. Drop the step that re-checks the tag beforepublish-github-releasefrom callers that copied the README example (#23) by @gaborbernat. - Stop validating caller input in the prepare and tag Actions.
prepare-towncrierno longer rejects an unknownphase, afinalizerun withoutversion, achangelog-prefixother than empty orv, an explicitversionthat is not newer than existing tags, other hook configuration files, or an unknown changelog format; any changelog not ending in.rstis formatted withmdformat.read-towncrier-configno longer checks that the paths are normalized and inside the repository, that the changelog ends in.mdor.rst, or that fragment categories are configured.select-previous-tagno longer requires the tag to exist locally or limits it to one namespace separator, andcommit-and-tagno longer rejects an emptytokenorapp-slugor anannotatedvalue other thantrueorfalse; any value other thantruecreates a lightweight tag (#23) by @gaborbernat. - Stop validating caller input in the publishing Actions.
publish-github-releaseno longer rejects an empty tag, title, or notes file, aprereleaseother thantrueorfalse, an unknownmode, or asset directories with hidden, non-regular, or unusually named entries.publish-jetbrains-marketplaceno longer checks the archive name and type, the plugin ID, the channel, the tag ref, the notes file type, the artifact IDs, or thatpublish-tokenis set.sign-jetbrains-pluginno longer checks the archive name and type, andpublish-post-release-prno longer checks the format of its inputs or theallowed-pathsentries (#23) by @gaborbernat.
Breaking changes
- Reduce
validate-release-patchto applying the patch and checking its paths and file modes, and remove itsversionandchecksinputs; remove them from callers. It no longer rejects amainbranch that moved, a patch that leaves the changelog unchanged, or RST conflict markers, and it no longer runsrelease-creator validate-fragment-deletions,release-creator notes, the hook configuration check, orprek(#23) by @gaborbernat. - Remove the
app-slugandcommit-messageinputs frompublish-post-release-pr; remove them from callers. The Action no longer compares the candidate's author, committer, and message with the App bot and the expected message, re-reads the branch, pull request head, or base after writing, or checks the files of an already merged pull request against the current base (#23) by @gaborbernat. - Remove the
check-tagged-sourceAction, and stop checking the tag invalidate-python-release.yaml: the workflow no longer requires the tag to resolve toGITHUB_SHAor to sit onmain, and checks out the tag with the default fetch depth. Removecheck-tagged-sourcesteps from callers (#23) by @gaborbernat. - Remove the
lockjob fromvalidate-python-release.yamlandprepare-towncrier-release.yaml, and the lock check fromcheck-tagged-source.validate-newsstill checks the lock on the pull request that changes it. Both workflows drop theadditional-lock,additional-lock-groups,additional-lock-selection,additional-matrix-python,additional-matrix-platforms, andadditional-matrix-implementationsinputs, andcheck-tagged-sourcedrops them along withexclude-newerandexclude-newer-package; remove them from callers. Without thelockjob,prepare-towncrier-release.yamlno longer skips a dispatch from a branch other thanmain(#23) by @gaborbernat. - Remove the
validatejob fromprepare-towncrier-release.yaml, which recalculated the version and ranrelease-creatorandprekon the patch thatassemblehad just produced;pushnow depends onassemblealone. The workflow no longer installs therelease-validategroup (#23) by @gaborbernat. - Remove the
verify-lockandverify-groupsinputs frominstall-locked-toolsandverify-groupsfromexport-build-constraints, together with thecheck_lock_groups.pycheck behind them; remove them from callers.install-locked-toolsno longer checks that the requested groups exist in the lock or ...
5.0.2
Immutable
release. Only release title and notes can be modified.
Bug fixes
- Make
refresh-release-lockincheckmode install the Nab version that the committedpylock.tomlrecords in[tool.nab] nab-version, and fail if the lock records none. A Nab release newer than that version rewrites the field, so every committed lock failed the check until the weekly refresh.refreshmode still installs the newest Nab under the cutoff, andnab-git-commitstill installs from that commit in both modes (#22) by @gaborbernat. - Make
validate-newsreject a pull request that removespylock.tomlwhen the project has anab.toml, as it already did for a[tool.nab]table inpyproject.toml(#22) by @gaborbernat.
Documentation
- Say that
check-tagged-sourcereads the tag of a non-tag run from thetaginput of theworkflow_dispatchevent,github.event.inputs.tag, rather than from an input of the Action (#22) by @gaborbernat.
Security
- Make the Actions install their own tools, such as Nab,
packaging,certifi, andpypi-attestations, from PyPI even when the caller's repository or environment configures another index. The installer now ignoresuv.toml,[tool.uv]inpyproject.toml, and theUV_INDEX,UV_INDEX_URL,UV_DEFAULT_INDEX,UV_EXTRA_INDEX_URL,UV_FIND_LINKS,UV_CONFIG_FILE,UV_INSECURE_HOST,UV_SYSTEM_CERTS,SSL_CERT_FILE, andSSL_CERT_DIRvariables, ascooled-prekalready does (#22) by @gaborbernat.
5.0.1
Immutable
release. Only release title and notes can be modified.
Bug fixes
- Install the whole Nab workspace from the
nab-git-commitcommit:naband itsnab-index,nab-markersets,nab-project,nab-provider, andnab-resolversub-packages, which the root pins to an unreleased version (#21) by @gaborbernat. - Let
check-tagged-sourceaccept aworkflow_dispatchor other non-tag run, such as one frommainwith ataginput, when the checkout is the commit that tag names and that commit is onmain. Tag runs still require the tag,GITHUB_SHA, and the checkout to match (#21) by @gaborbernat.
5.0.0
Immutable
release. Only release title and notes can be modified.
Features
- Add
exclude-newerandexclude-newer-packageinputs to every Action and reusable workflow that installs its own tools.exclude-newerdefaults to7 days;exclude-newer-packagetakes newline-separatedname=dateoverrides for an emergency (#20) by @gaborbernat. - Add a temporary
nab-git-commitinput torefresh-release-lockand to the Actions and reusable workflows that call it. A full commit SHA installs Nab fromnotatallshaw/nabat that commit, with no cooldown, until a Nab release carries the fix (#20) by @gaborbernat. - Add the
cooled-prekAction, which runs prek with the root configuration and hook environments built under the seven-day cutoff. The prepare workflow now installs its hooks through it (#20) by @gaborbernat. - Run
release-creator contributorsafter the Towncrier build inprepare-towncrier, so the changelog section gets a "New Contributors" subsection. It needs release-creator 3.1.0 (#20) by @gaborbernat.
Changes
- Drop the hook pin mention from the default
pull-request-bodyofupgrade-release-tools.yaml, which now reads "Refresh the project lock." (#20) by @gaborbernat. - Let
validate-newsaccept a pull request that removespylock.tomlwhen the project has no[tool.nab]table and noadditional-lockis configured, so nothing would produce a lock (#20) by @gaborbernat. - Make
check-tagged-sourcerequire that the tag resolves toGITHUB_SHA, as the Python release build job does (#20) by @gaborbernat. - Make the github-workflows release job check that the tag still resolves to the tagged commit before it creates the GitHub Release, and check the tag inline instead of through
check-tagged-source(#20) by @gaborbernat. - Reject a primary lock refresh that changes the lock's target environments, as the secondary lock refresh already does (#20) by @gaborbernat.
Breaking changes
- Accept only
pylock.tomland the configured secondary lock in theupgrade-release-tools.yamlpatch.pyproject.tomlanduv.lockchanges are rejected (#20) by @gaborbernat. - Generate the primary
pylock.tomlwithnab lock --all-groups --all-extras --no-cache, adding--upgradeinrefreshmode, and compare a regenerated lock incheckmode. Therelease-creator lockspath and the uv resolver steps are gone, so relock arelease-creator lockslock with Nab before re-pinning. Nab runs withoutSSL_CERT_FILEandSSL_CERT_DIR(#20) by @gaborbernat. - Remove GitHub's generated notes from the release path: the
generated-notesinput ofrender-release-notesis gone, and the github-workflows release no longer has a Contents-write job that fetches contributor metadata. The read-only notes job now runs in parallel with the tag check and renders the notes from the full history alone (#20) by @gaborbernat. - Remove the Actions' shared
pylock.toml, its weekly refresh, and thelock-sourceinput ofinstall-locked-tools. The Actions now install the newest release of each of their own tools, above a minimum version, that is older than a seven-day cutoff, andinstall-locked-toolsinstalls only from the caller'spylock.toml. Build constraints come from the caller lock'sbuildgroup alone, without the shared Cython and setuptools pins (#20) by @gaborbernat. - Remove the
--shared-policyoption and two-lock merging fromtools/build_constraints.py; it now exports the build constraints of one lock (#20) by @gaborbernat. - Remove the
check-hook-update-cooldownandrecheck-hook-update-cooldownActions and therecheck-hook-cooldown.yamlworkflow. Pull requests that change.pre-commit-config.yamlare no longer checked for hook revision age or dependency closure cooling; drop thehook-cooldownjob and its scheduled rerun from callers (#20) by @gaborbernat. - Remove the
install-local-release-creatorAction and thelocal-tool-sourceinput ofinstall-locked-toolsandprepare-towncrier-release.yaml. A lock may no longer list release-creator as a local directory package (#20) by @gaborbernat. - Remove the
keep-uv-lockinput ofrefresh-release-lock,validate-news,check-tagged-source,prepare-towncrier-release.yaml,upgrade-release-tools.yaml, andvalidate-python-release.yaml. A committeduv.lockis no longer refreshed or checked (#20) by @gaborbernat. - Remove the
refresh-mise-pinAction. Callers that pinned a mise binary with it keepjdx/mise-action's default release age instead (#20) by @gaborbernat. - Remove the
verify-frozen-hooksAction with its frozen revision, tagged hook provenance, and hook dependency closure checks. The shared prepare workflow andcheck-tagged-sourceno longer run it; drop it from custom tag jobs.prepare-towncrierandvalidate-release-patchnow reject aprek.tomlor a nested hook configuration before they runprek(#20) by @gaborbernat. - Remove the hook refresh from
upgrade-release-tools.yaml. The weekly updater no longer runsprek update --freeze --cooldown-days 7orrelease-creator hooks, and its writer accepts only the lock patch; let Dependabot'spre-commitecosystem update hook revisions instead (#20) by @gaborbernat. - Remove the reviewed cutoff table, the recent cutoff check, the cutoff expiry, and the
verify-cutoff-patchAction. Callers own their per-packageuploaded-prior-toexceptions in[tool.nab], and gw neither checks nor expires them (#20) by @gaborbernat. - Restructure
validate-python-release.yaml. A keylesslockjob checks the locks in parallel withbuild, which now checks the tag inline, including that it resolves toGITHUB_SHA, and exports its own build constraints; thesource-checkandconstraintsjobs and thebuild-constraintsartifact are gone. Thevalidatejob, which rantwine checkandcheck-wheel-contents, is removed; packages check their distributions with their owntox -e pkg_meta. The workflow no longer needsactions: readorpull-requests: read(#20) by @gaborbernat. - Stop checking caller locks against PyPI metadata and upload times in
install-locked-tools.check_lock_groups.pynow only checks that the selected groups exist, and Nab's regenerate-and-compare check inrefresh-release-lockguards the lock on pull requests, on tags, and in a new keylesslockjob ofprepare-towncrier-release.yamlthat runs before assembly (#20) by @gaborbernat. - Stop running
prekon the tagged source.check-tagged-sourcenow checks only the tag and the locks and no longer installs the caller'srelease-checkgroup; the release patch is still checked withprekbefore it is pushed (#20) by @gaborbernat.
Packaging
- Lock github-workflows' own
release-prepareandrelease-validatetools, with thebuildbackends PyYAML needs, in a smallpylock.tomlmade by Nab under the seven-day cutoff, so its release preparation installs them hash-checked from its own lock like every caller (#20) by @gaborbernat.