Skip to content

Add zizmor and fix its findings - #183

Merged
dduugg merged 1 commit into
mainfrom
add-zizmor
Sep 29, 2026
Merged

dduugg merged 1 commit into
mainfrom
add-zizmor

Conversation

@dduugg

@dduugg dduugg commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds .github/workflows/zizmor.yml, a caller of rubyatscale/shared-config/.github/workflows/zizmor.yml@main (rubyatscale/shared-config#32), and fixes everything zizmor 1.30.1 reports in this repo so the new check starts clean. The same cleanup went into visualize_packs#113 and pks#55.

  • zizmor mode: the default advanced-security: true, so results go to the Security tab and findings don't fail the job. The caller grants contents: read and security-events: write.
  • Pinned to commit SHAs, with the exact version in a trailing comment:
    • actions/checkout v6 → v7.0.1 (6×)
    • actions/download-artifact v4 → v4.3.0
    • actions/upload-artifact v4 → v4.6.2
    • oxidize-rb/actions/cross-gem v1 → v1.5.0
    • oxidize-rb/actions/fetch-ci-data v1 → v1.5.0 (2×)
    • oxidize-rb/actions/setup-ruby-and-rust v1 → v1.5.0 (3×)
    • ruby/setup-ruby v1 → v1.327.0 (2×)
    • slackapi/slack-github-action v1.25.0 (2×)
    • checkout moves to v7.0.1, the version shared-config pins. Unless noted below, the rest stay on the release their floating tag runs today.
  • persist-credentials: false on 6 checkouts, so the token isn't left in .git/config.
  • Documented ignores for the org's deliberate patterns, worded as in the other repos:
    • unpinned-uses on the @main calls into shared-config, which exist so its fixes propagate.
  • Dependabot: a 7-day cooldown on every entry, plus a github-actions entry to keep the new pins current.
  • CD template injection: the build and release steps expanded matrix.ruby-platform and the gem version straight into shell. They now read them from env vars; the release step already had GEM_VERSION in its env.
  • Documented ignores specific to this repo's CD:
    • dangerous-triggers: CD checks out and publishes the default branch, never the triggering run's code or artifacts.
    • adhoc-packages: the smoke test's gem install installs the gem the job just built.
    • use-trusted-publishing: gem push still uses RUBYGEMS_API_KEY. Follow-up: switching to trusted publishing needs a publisher configured for code_ownership on rubygems.org first. After that, this ignore can go.

Test plan

  • zizmor 1.30.1 with online audits: 35 findings before, 0 after.
  • actionlint reports nothing new.
  • Fresh Eyes local review: no findings.
  • zizmor / zizmor and the existing checks pass on this PR.

@dduugg
dduugg requested a review from a team as a code owner September 29, 2026 20:25
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

Adds a zizmor workflow that calls rubyatscale/shared-config's reusable
zizmor.yml, and fixes what zizmor 1.30.1 reports here so it starts
clean.

Actions are pinned to commit SHAs with the exact version in a trailing
comment: checkout at v7.0.1, as shared-config pins it, and the rest at
the release their floating tag runs today. Checkouts set
persist-credentials: false. The @main calls into shared-config and the
workflow_run CD trigger get the same documented zizmor ignores the other
rubyatscale repos use. Dependabot entries get a 7-day cooldown, and a
github-actions entry keeps the new pins current.

The CD workflow passes the matrix platform and gem version to its
scripts through env vars instead of expanding them inline. Its
workflow_run trigger, the smoke test's gem install of the gem it just
built, and gem push with an API key are marked as known; moving to
trusted publishing needs a publisher configured on rubygems.org first.
@dduugg
dduugg merged commit b96c60a into main Sep 29, 2026
16 checks passed
@dduugg
dduugg deleted the add-zizmor branch September 29, 2026 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants