Repository navigation
ci(codecov): upload with OIDC instead of CODECOV_TOKEN - #780
Merged
Merged
Conversation
|
OX Security reviewed this pull request — nothing to fix.
Branch |
Codecov Report✅ All modified and coverable lines are covered by tests. |
idelsink
force-pushed
the
chore/OP-3890-codecov-oidc
branch
from
November 13, 2026 15:32
fc175de to
80ea808
Compare
idelsink
enabled auto-merge (squash)
November 13, 2026 15:35
olivermeyer
approved these changes
Nov 13, 2026
|
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.



Why
OP-3890: the org secret
CODECOV_TOKENis not rotated. Instead, every repo uploads to Codecov with OIDC, and then the token is deleted. aignostics/peng-dev-random#255 proved that an OIDC upload works for this org. Reference PR: aignostics/pdd-mapper#89.How
_test.ymland_scheduled-test-daily.ymlusecodecov/codecov-actionv7.1.1 (the latest release) withuse_oidc: true. With OIDC, the action ignores any token.codecov/test-results-actionis archived. The test results upload is nowcodecov-actionwithreport_type: test_results.CODECOV_TOKENis gone from theworkflow_callsecrets and from the callers (ci-cd.yml,scheduled-testing-{production,staging}-daily.yml).id-token: write. These jobs hadcontents: readonly, since d0eee9f. The permission is added on thetestjob in_test.yml, the job in_scheduled-test-daily.yml, and the three caller jobs. Each line has a comment, for zizmorundocumented-permissions. A called workflow cannot get more permissions than its caller gives (GitHub docs).actions.lockis edited by hand (thetest-results-actionentries are removed), becausegh actions-lockrewrites every SHA pin in the repo to a tag..github/CLAUDE.mdand the CI/CD spec no longer list the token.CODECOV_TOKENbefore either. Codecov accepts a tokenless upload from a fork of a public repo (Codecov tokens). The stepif:conditions are unchanged.After all repos in OP-3890 merge, the org secret
CODECOV_TOKENis deleted.Verified
git grep -i codecov_tokenreturns nothing.git grep test-results-actionfinds only two old release notes inCHANGELOG.md.gh actions-lock --verify: all 28 workflows valid.--offline --persona pedantic): the same count per rule as onmain.pinact run --checkexits 1 for the# v5.2comment ofpyvista/setup-headless-display-actionin_claude-code.yml,_scheduled-test-daily.ymland_test.yml. The same onmain; not touched here.test / test (ubuntu-latest, false): both Codecov steps pass. Each logsToken length: 2323(the OIDC token) andUpload queued for processing complete(coverage: 13 files; test results: 8test_resultsfiles). Only the ubuntu leg uploads.Not verified
macos-15-intelleg oftest / teststill runs. The other experimental legs passed. These legs do not upload to Codecov._scheduled-test-daily.ymland its callersscheduled-testing-{production,staging}-daily.ymldo not run on a PR. They run first on the next daily schedule after the merge.