Repository navigation
Split from CLA: release workflows only - #1
Conversation
Remove the agreement, signatures and the Dependabot auto-merge workflow (D10); they stay in CLA or are retired. Rename the project to release-workflows. Add release.yml (release this repo from stable with its own workflows) and dev-security.yml (dependency review, actionlint, zizmor). Scope the CLA App token to CLA and the calling repository with the permissions it uses. Dependabot cooldown of 7 days; self-repository syntax for local calls.
en0f
left a comment
There was a problem hiding this comment.
Approved, but a few items worth confirming:
1.) CLA token scoping (cla-reusable.yml). repositories: CLA,${{ github.event.repository.name }} only works if the CLA App is installed on every repo that calls this workflow. Before this change the token covered the App’s whole installation, so it didn’t matter which repo called it. Now, any caller repo outside the installation makes the token step fail. The CLA job then never posts a status, and outside PRs on that repo get stuck. Check the App’s installation list against the repos that call this workflow.
2.) Same file, smaller point. permission-contents: write now also applies to the calling repo, not just CLA. Only CLA needs write access. Using two tokens would fix that, but nothing breaks if you leave it.
Worth noting:
release-check.yml fails the run if any of these are missing:
a.) A release environment exists, limited to the stable branch only, with admin bypass turned off.
b.) If the repo is public, that environment has required reviewers and “prevent self-review” turned on.
c.) The BLS_RELEASE_APP_ID variable and the BLS_RELEASE_PRIVATE_KEY environment secret are set.
FYI:
- pyproject.toml is still at 0.0.0. The first merge to stable would create tag v0.0.0 unless the version is bumped first. The README’s pinning example uses v1.0.0.
- Each release will ask for approval twice. release-check.yml (its credentials job) and publish.yml both run in the release environment. That’s existing behaviour, but the README describes a single bbot-leads approval.
- The README says CodeQL is a required check on dev, but no CodeQL check ran on this PR. Either it isn’t set up or the README is wrong.
The caller's pull request commits are read with its own GITHUB_TOKEN, so the App token no longer needs the calling repository or write access to it.
CodeQL default setup was enabled after the last push; reopening the pull request did not start a scan.
The code scanning rule was added to dev-review after the previous push; reopening the pull request did not start a scan.
Splits the reusable workflows out of
CLA. The agreement and signatures stay inCLA.ICLA.md,signatures/anddependabot-auto-merge.yml(Dependabot pull requests are merged by a person).release-workflows.release.yml: on a merge tostable, runs this repo's ownrelease-check.yml, tests andpublish.yml. The tag is created by the release App after thereleaseenvironment is approved.dev-security.yml: dependency review,actionlint,zizmor.cla-reusable.yml: the App token is scoped toCLAand the calling repository, with contents write, members read and pull requests read. It previously covered every repository with all of the App's permissions.zizmorfindings are ignored inline, each with its reason: the archived CLA action, andtoJSON(secrets)inpython-tests.yml.$/.Local: pytest 41 passed, ruff clean, actionlint clean, zizmor 1.31.1 no findings (2 ignored).