Conversation
Resolve every action reference in base_builder.yaml to its commit SHA (with a version comment) via actions-up, so a compromised or retagged release cannot silently change what the workflow runs. Each action was also bumped to its latest release; see PR description for the resulting major version changes. Assisted-by: Claude (Anthropic)
Address zizmor --persona=pedantic findings on base_builder.yaml:
- artipacked: set persist-credentials: false on the checkout step.
- excessive-permissions: default to permissions: {} at the workflow
level and grant the job only contents: read (needed by checkout).
- concurrency-limits: add a per-ref concurrency group so overlapping
runs cancel stale ones instead of racing.
- anonymous-definition: name the job.
Also add .github/dependabot.yml for monthly, 7-day-cooldown, grouped
updates of GitHub Actions, since none existed.
Assisted-by: Claude (Anthropic)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CI security hardening for
.github/workflows/base_builder.yaml. No source code, lint config, or test code changed.actions-up --min-age=7 --style=sha --include-branches.zizmor --persona=pedanticfindings on.github:artipacked: addedpersist-credentials: falseto the checkout step.excessive-permissions: setpermissions: {}at the workflow level, and granted thedockerjob onlycontents: read(needed by checkout).concurrency-limits: added a per-refconcurrencygroup withcancel-in-progress: true.anonymous-definition(info): named thedockerjob..github/dependabot.yml(none existed) for monthly, grouped, 7-day-cooldown updates of GitHub Actions.This repo has no
.pre-commit-config.yaml,pyproject.toml, orpixi.toml, so the pre-commit-hook-update andexclude-newer/cooldown steps of the secure-ci checklist don't apply here.Major version changes
actions-upbumped every action in the workflow to its latest release (all were outside the 7-day cooldown). All are major version bumps:actions/checkoutdocker/metadata-actiondocker/setup-qemu-actiondocker/setup-buildx-actiondocker/login-action(x2)docker/build-push-action(x2)peter-evans/repository-dispatchEach pinned SHA was verified against
git ls-remotefor the corresponding tag, and each new version is newer than what was previously pinned (noactions-upsorting mixups observed). Since this workflow builds and pushes real images consumed by GitOps (usatlas/analysisbase-dask-uc), please review the major bumps - especiallydocker/build-push-actionv6 to v7 andactions/checkoutv4 to v7 - before merging, given none of this could be exercised locally (registry logins and the repository-dispatch trigger require repo secrets).Held-back items
None. No
.pre-commit-config.yamlexists, so no hook updates were needed, and no action update was inside the cooldown window or broke anything in scope.zizmor ignores
None added - every finding was fixed directly rather than suppressed.
Not done (flagged for a separate change set)
The secure-ci checklist also recommends isolating deploy jobs from build jobs (separate job + artifact hand-off) so push credentials aren't live during the image build step.
base_builder.yamlcurrently does the QEMU/buildx setup, both registry logins, the build, the push, and the GitOpsrepository-dispatchall in one job. Splitting this cleanly would mean exporting the built image as an artifact from a build job and loading/pushing it from a separate deploy job, which is a real change to the release pipeline (two registries + a downstream GitOps trigger) rather than a pure hardening tweak. I held this back rather than risk breaking the image publish path in a security-hardening PR - happy to do it as a follow-up if you want it.Verification
uvx zizmor --persona=pedantic .github→ no findings..githubis a tag or branch; all are SHAs with a version comment (verified via grep)..pre-commit-config.yamldoes not exist in this repo, soprekwas not applicable.