Skip to content

ci: install codecov CLI from PyPI to avoid flaky keybase.io key fetch#1204

Closed
timtreis wants to merge 3 commits into
mainfrom
ci/codecov-use-pypi
Closed

ci: install codecov CLI from PyPI to avoid flaky keybase.io key fetch#1204
timtreis wants to merge 3 commits into
mainfrom
ci/codecov-use-pypi

Conversation

@timtreis

@timtreis timtreis commented Jun 8, 2026

Copy link
Copy Markdown
Member

Follow-up to #1203. codecov-action@v6 fixed the bricked-key problem, but the action still imports the signing key from keybase.io at runtime (codecov.sh: curl https://keybase.io/codecovsecops/pgp_keys.asc). keybase.io is unreliable - when that fetch times out the GPG step fails with no valid OpenPGP data found, and with fail_ci_if_error: true the Coverage job hard-fails. Seen on #1117's run: https://github.com/scverse/squidpy/actions/runs/27140601219/job/80104717511

use_pypi: true installs the CLI from PyPI instead of cli.codecov.io, skipping the keybase key fetch entirely while still sourcing the CLI from a trusted channel.

Ref: codecov/codecov-action#1956

timtreis and others added 3 commits June 8, 2026 14:42
The codecov CLI binary GPG signature was verified against Codecov's old
Keybase key (codecovsecurity), which they bricked after migrating to
codecovsecops. codecov-action@v5 still uses the old key, so the upload
step fails with "Could not verify signature" and, because
fail_ci_if_error is true, hard-fails the Coverage job.

codecov-action v6.0.2 ships the updated key (a verbatim copy of v7,
published by the maintainer for exactly this transition). Pinning @v6
picks it up while staying on the smaller, non-breaking major.

Refs: codecov/codecov-action#1956

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
codecov-action@v6 still imports the signing key from keybase.io at
runtime (codecov.sh: curl https://keybase.io/codecovsecops/pgp_keys.asc).
keybase.io is unreliable; when that fetch times out the GPG verification
fails with "no valid OpenPGP data found" and, with fail_ci_if_error true,
hard-fails the Coverage job.

use_pypi: true installs the CLI from PyPI instead of downloading it from
cli.codecov.io, skipping the keybase key fetch entirely while still
sourcing the CLI from a trusted channel.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@timtreis timtreis closed this Jun 8, 2026
@codecov

codecov Bot commented Jun 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 75.32%. Comparing base (0b43296) to head (1dbf406).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1204   +/-   ##
=======================================
  Coverage   75.32%   75.32%           
=======================================
  Files          56       56           
  Lines        7936     7936           
  Branches     1295     1295           
=======================================
  Hits         5978     5978           
  Misses       1447     1447           
  Partials      511      511           
🚀 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