Skip to content

fix(ci): skip Codecov upload when CODECOV_TOKEN is not configured - #162

Merged
wangzhizhou merged 1 commit into
mainfrom
fix/coverage-upload-token-gate
Oct 5, 2026
Merged

wangzhizhou merged 1 commit into
mainfrom
fix/coverage-upload-token-gate

Conversation

@wangzhizhou

Copy link
Copy Markdown
Contributor

问题

Coverage 工作流自 2026-10-04 起每次运行都红灯(push 与每周一 schedule 均失败):

Token length: 0
error - Upload queued for processing failed: {"message":"Token required because branch is protected"}
##[error]Process completed with exit code 1.
  • 失败步骤:Upload coverage to Codecov(coverage.yml:49)。
  • 根因:仓库启用分支保护后,Codecov 要求受保护分支的上传必须携带 token;而本仓库只配置了 GHCR_PRUNE_TOKEN,CODECOV_TOKEN 未配置(gh secret list 已确认)。secrets.CODECOV_TOKEN 展开为空串 → 上传被拒 → fail_ci_if_error: true 使整个 job 失败。
  • 实际影响:Coverage 从 10-04 起持续红(最近 4 次运行:a3a7fb8 / 5b85954 / 49a4b43(push) / 49a4b43(schedule) + 0893061 全部 failure),且每周一还会继续红;覆盖率数据事实上从未上传成功。

修复

沿用仓库已有的 GHCR_PRUNE_TOKEN 模式(见 docker.yml:110、ghcr-prune.yml:21):

env:
  # secrets context 不能出现在 if 表达式(job/step 级均解析失败)→ 经 job env 中转,step if 判空。
  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
  • Upload coverage to Codecov 增加 if: ${{ env.CODECOV_TOKEN != '' }},token 传入改用 env.CODECOV_TOKEN;
  • 新增 Coverage upload skipped 步骤(if: ... == ''):打印 ::notice:: 并写入 Step Summary,明确暴露「尚未接入 Codecov」而不是静默跳过;
  • fail_ci_if_error: true 保持不变 —— 一旦配置 token,上传失败(过期 / 网络 / 策略)依旧红灯,门禁语义不受影响;
  • 覆盖率本身照常生成(lcov.info),只是不自动上传。

注:codecov/project、codecov/patch 目前未出现在分支保护的 required checks 中,即覆盖率门禁当前并未生效,因此本修复不会削弱任何生效中的门禁。

顺带:合并 CHANGELOG.md 顶部重复的 ## [Unreleased] 标题(同文件被重复插入了两次)。

验证

  • 本地 bash scripts/test-actions-pinning.sh → 通过(所有 action 仍为 40 位 SHA 固定)
  • 本地 bash scripts/test-release-workflow-security.sh → 通过
  • coverage.yml YAML 解析通过,step 级 if 使用 env 上下文(GitHub 允许)
  • 本 PR 已在分支上手动触发 workflow_dispatch 的 Coverage 运行,用于端到端确认「无 token → 跳过上传且 job 绿」:见 Actions 运行记录

后续(需要仓库管理员操作)

若要真正启用覆盖率门禁:

gh secret set CODECOV_TOKEN   # 之后覆盖上传恢复,失败仍会红灯

再把 codecov/project、codecov/patch 加入分支保护的 required checks。

@github-actions github-actions Bot added documentation Improvements or additions to documentation ci labels Oct 5, 2026
@wangzhizhou
wangzhizhou merged commit 15623aa into main Oct 5, 2026
19 of 20 checks passed
@wangzhizhou
wangzhizhou deleted the fix/coverage-upload-token-gate branch October 5, 2026 19:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant