Skip to content

Harden workflows for OpenSSF Scorecard - #1159

Merged
cdalar merged 1 commit into
mainfrom
scorecard-cheap-wins
Oct 4, 2026
Merged

cdalar merged 1 commit into
mainfrom
scorecard-cheap-wins

Conversation

@cdalar

@cdalar cdalar commented Oct 4, 2026

Copy link
Copy Markdown
Owner

The published Scorecard result is 5.7 and has not refreshed since 2026-07-08. This PR lands the changes that need no settings, tokens or second reviewer.

Changes

  • Scorecard publishing β€” scorecard.yml moves from onctl-4 to ubuntu-latest. Publishing is only accepted from GitHub-hosted runners, which is the likely reason the badge went stale.
  • Token-Permissions β€” every workflow now has a read-only top-level permissions block. Write scopes moved to the jobs that need them: the goreleaser jobs keep contents/packages: write, and in edge.yml only publish keeps contents: write.
  • Pinned-Dependencies
    • All actions are pinned to commit SHAs with the version in a trailing comment, so Dependabot keeps updating them.
    • govulncheck is pinned to the v1.8.0 commit instead of @latest.
    • The curl | sh quill installer in both goreleaser workflows is replaced by a download of quill 0.7.1 verified against its SHA-256.
    • The devcontainer base image is pinned by digest, with a Dependabot docker entry to keep it fresh.
  • Security-Policy β€” new SECURITY.md.
  • Fuzzing β€” FuzzAllocateFCIP in pkg/cloud/fc_test.go.

Verification

  • go test ./pkg/cloud passes; the fuzz target ran 30s (324k execs) with no failures.
  • The new quill install step was run locally on darwin/arm64: checksum OK, quill version reports 0.7.1.
  • actionlint reports nothing new (only the existing onctl-4 label and SC2174 warnings).

Not verified / needs a decision

  • Release workflows are not exercised by PR checks. Running goreleaser (self-hosted test) from this branch against an existing tag would confirm the quill and permission changes before the next real release.
  • SECURITY.md points at GitHub private vulnerability reporting, which is currently disabled on this repo. Enable it under Settings β†’ Security before merging, or swap the link for another contact.
  • govulncheck and snyk/actions (pinned to a master commit, it has no release tags) will not be bumped by Dependabot; they need a manual bump now and then.
  • quill moves from "whatever the installer serves" to 0.7.1, which was the latest release at the time of writing.

πŸ€– Generated with Claude Code

https://claude.ai/code/session_01FM1Tvz8jDNmhot3etAateY

Pin every action to a commit SHA, default workflow tokens to read-only
with write scopes on the jobs that need them, and replace the piped
quill installer with a checksum-verified download. Run Scorecard on a
GitHub-hosted runner so results publish again, add a security policy,
and add a fuzz test for the microVM IP allocator.

Claude-Session: https://claude.ai/code/session_01FM1Tvz8jDNmhot3etAateY
@cdalar
cdalar enabled auto-merge (squash) October 4, 2026 16:27
@cdalar
cdalar merged commit 2f5cb90 into main Oct 4, 2026
12 checks passed
@codecov

codecov Bot commented Oct 4, 2026

Copy link
Copy Markdown

Codecov Report

βœ… All modified and coverable lines are covered by tests.
βœ… Project coverage is 36.93%. Comparing base (194292d) to head (8d3a550).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1159      +/-   ##
==========================================
+ Coverage   36.89%   36.93%   +0.03%     
==========================================
  Files          51       51              
  Lines        5656     5656              
==========================================
+ Hits         2087     2089       +2     
+ Misses       3569     3567       -2     

β˜” View full report in Codecov by Harness.
πŸ“’ Have feedback on the report? Share it here.

πŸš€ New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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.

1 participant

⌂ 捒网址