ActionScope Release Runbook¶
This runbook captures the manual checklist for publishing ActionScope to PyPI, GitHub Releases, and GitHub Marketplace.
Before merging any release-related PR, follow the Merging Pull Requests policy: the branch must be up to date with
mainand CI must be green on the rebased commit, not on a stale base. This catches conflicts thatmergeable: truedoes not.
PyPI Trusted Publishing¶
- Open PyPI Trusted Publishers.
- Confirm the pending or active publisher:
- Project name:
actionscope - Owner:
r12habh - Repository:
ActionScope - Workflow:
release.yml - Environment:
release - If the project already exists, manage the publisher from the project page: actionscope on PyPI.
- Do not create or store a PyPI API token for the release workflow. The workflow uses GitHub OIDC and PyPI trusted publishing.
GitHub Release Environment Approval¶
- Open repository environments.
- Confirm an environment named
releaseexists. - Require manual approval from the repository owner before deployment.
- Keep the
release.ymlworkflow usingenvironment: releaseso PyPI publication cannot happen from an unreviewed tag push.
Version Bump Flow¶
- Update the version across project files:
python scripts/bump_version.py OLD_VERSION NEW_VERSION
- Update
CHANGELOG.mdwith the release date and the changes. - Run the pre-release checks:
pip install -e ".[dev,aws]"
python scripts/pre_release_check.py
- Commit the version bump:
git add pyproject.toml actionscope/__init__.py action.yml CHANGELOG.md
git commit -m "Release vNEW_VERSION"
git push origin main
- Create and push the tag:
git tag vNEW_VERSION
git push origin vNEW_VERSION
- Approve the
releaseenvironment deployment in GitHub Actions.
Updating the v0 Major Tag¶
Marketplace users install the action with uses: r12habh/ActionScope@v0.
After a successful v0.x.y release, move the v0 tag to the new release:
git tag -f v0 vNEW_VERSION
git push origin v0 --force
Only move v0 after PyPI publication and the GitHub Release are both healthy.
GitHub Marketplace Checklist¶
- Open the release page: ActionScope releases.
- Edit the latest release.
- Confirm "Publish this Action to the GitHub Marketplace" is enabled.
- Confirm metadata from
action.ymlis valid: - Name:
ActionScope - Description is concise and accurate
- Icon:
shield - Color:
orange - Primary category:
Security - Secondary category:
Continuous integration - Confirm the README renders correctly and links to PyPI, docs, research, and SARIF setup.
Rollback Plan¶
If PyPI publish fails before a package is uploaded:
- Fix the release workflow or metadata.
- Delete the failed GitHub Release if it was created.
- Re-run the release workflow from the same tag after the fix is merged, or create a patch tag if the tag contents changed.
If PyPI publish succeeds but the GitHub Release fails:
- Keep the PyPI package. PyPI releases are immutable.
- Re-run or repair the GitHub Release manually using the built artifacts.
- Do not reuse the same version with different code.
If a broken package is published:
- Yank the version on PyPI instead of deleting it: actionscope release history.
- Publish a patch release, for example
0.1.2. - Move the
v0tag only after the patch release is verified. - Add a short note to
CHANGELOG.mdexplaining the yanked release and fix.