Skip to content

ci: pin the release tooling instead of rebuilding it unpinned every run - #17

Merged
alexFiorenza merged 1 commit into
developfrom
fix/release-gitpython-pin
Aug 25, 2026
Merged

alexFiorenza merged 1 commit into
developfrom
fix/release-gitpython-pin

Conversation

@alexFiorenza

Copy link
Copy Markdown
Contributor

Why the develop release broke

The Release run after merging #16 failed in the Python Semantic Release step with:

AttributeError: type object 'Actor' has no attribute 'name_email_regex'

Nothing in this repo caused it. The chain:

  1. python-semantic-release@v9 (and publish-action@v9) are Docker actions whose image is rebuilt on every run, pip-installing their dependencies unpinned.
  2. GitPython 3.1.60 hit PyPI on 2026-08-25 at 18:33 UTC — our run started at 18:46, thirteen minutes later.
  3. 3.1.60 (Harden diff path and actor identity parsing gitpython-developers/GitPython#2215) removed the Actor.name_email_regex class attribute that every python-semantic-release version — v9 and current master — reads while parsing its configuration (commit_author).
  4. The Aug 20 run was green because PyPI still served 3.1.59 that day. Upgrading the action to v10 would not help; PSR master still uses the attribute.

The fix

Run semantic-release from a venv this workflow installs itself, with both python-semantic-release==9.21.2 and gitpython==3.1.59 pinned — for the version step and the GitHub-Releases publish step (publish-action has the identical unpinned install and would fail the same way).

Faithful to what the actions did:

  • the venv is seeded with pip because build_command expects one, the way the action's container provided it;
  • committer identity and GIT_COMMIT_AUTHOR match the action's defaults;
  • the released/version/tag outputs are written by semantic-release itself whenever GITHUB_OUTPUT is set, so the PyPI and GitHub-Releases steps are driven exactly as before.

Merging this triggers the Release workflow on develop (the workflow file is in the push path filter), so the prerelease that #16 should have cut goes out with the merge.

The gitpython pin can be dropped once upstream stops using the removed attribute.

🤖 Generated with Claude Code

The python-semantic-release and publish-action Docker actions pip-install
their dependencies at image build time, on every run, with no lockfile.
GitPython 3.1.60 (published 2026-08-25 18:33 UTC) removed the
Actor.name_email_regex attribute that every python-semantic-release
version reads while parsing its configuration, and the develop release
job died 13 minutes later with no change on our side.

Both steps now run semantic-release from a venv this workflow installs
itself, with python-semantic-release and gitpython pinned. The venv is
seeded with pip because build_command expects one, the way the action's
container provided it. Outputs are unchanged: semantic-release writes
released/version/tag to GITHUB_OUTPUT itself whenever the variable is
set, action or no action.

The gitpython pin can be dropped once python-semantic-release stops
using the removed attribute.
@alexFiorenza
alexFiorenza force-pushed the fix/release-gitpython-pin branch from 7dba03c to d7b1213 Compare August 25, 2026 19:01
@alexFiorenza
alexFiorenza merged commit 4a2db6a into develop Aug 25, 2026
5 checks passed
@alexFiorenza
alexFiorenza deleted the fix/release-gitpython-pin branch August 25, 2026 19:03
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