Skip to content

ci: pin actions to commit SHAs and lint workflows - #11

Merged
samuelburnham merged 1 commit into
devfrom
ci/pin-actions
Oct 1, 2026
Merged

samuelburnham merged 1 commit into
devfrom
ci/pin-actions

Conversation

@samuelburnham

Copy link
Copy Markdown
Member

Every third-party uses: in the workflows and in action.yml itself now carries a full commit SHA with a version comment, the form Dependabot reads to keep the pins fresh. The shared ci-workflows actions on main are a branch ref with no tag to pin to; .github/pinact.yaml exempts them and .github/zizmor.yml gives them a ref-pin policy.

A new Lint workflow calls ci-workflows' lint-workflows action (actionlint, shellcheck over composite action scripts, pinact check and verify, zizmor). Getting zizmor clean: every checkout sets persist-credentials: false (the test jobs never write back, and the self-update PR goes through create-pull-request's token input), step outputs interpolated into test scripts move into step env: so the shell reads variables instead of expanded text, and Dependabot gets the 7-day cooldown zizmor requires plus a single grouped PR. The test workflows keep upstream's uses: ./ for the action under test, so the self-repository audit is ignored for them.

Every third-party `uses:` in the workflows and in action.yml itself now
carries a full commit SHA with a version comment, the form Dependabot reads
to keep the pins fresh. The shared ci-workflows actions on `main` are a
branch ref with no tag to pin to; `.github/pinact.yaml` exempts them and
`.github/zizmor.yml` gives them a ref-pin policy.

add-and-commit moves from v10 to v11 (supersedes #7). The major version
hardens the action's git argument handling and stops logging the git
config; this action passes only `default_author`, which v11 keeps, and
the runtime stays node24.

A `lints` job in the Lean Action CI workflow calls ci-workflows'
lint-workflows action (actionlint, shellcheck over composite action
scripts, pinact check and verify, zizmor). zizmor audits the whole tree,
so action.yml is covered too. Getting it clean: every checkout sets
`persist-credentials: false` (the test jobs never write back, and the
self-update PR goes through create-pull-request's token input), step
outputs and outcomes interpolated into scripts in the test workflows and
in action.yml move into step `env:` so the shell reads variables instead
of expanded text, the elan PATH append carries an inline ignore since the
value is the runner's own home directory, and Dependabot gets the 7-day
cooldown zizmor requires plus a single grouped PR. The test workflows
keep upstream's `uses: ./` for the action under test, so the
self-repository audit is ignored for them.

The HasDep and TwoDeps fixtures carried the workflow `lake new` scaffolds
into every package. Nothing runs them and zizmor flagged them, so they are
removed.
@samuelburnham
samuelburnham merged commit 7215ebe into dev Oct 1, 2026
20 checks passed
@samuelburnham
samuelburnham deleted the ci/pin-actions branch October 1, 2026 17:57
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.

2 participants