Skip to content

[CI] Upload full coverage files to BOS in Coverage workflow - #79920

Open
liuhao2638 wants to merge 1 commit into
PaddlePaddle:developfrom
liuhao2638:ci-coverage-full-bos
Open

liuhao2638 wants to merge 1 commit into
PaddlePaddle:developfrom
liuhao2638:ci-coverage-full-bos

Conversation

@liuhao2638

Copy link
Copy Markdown
Contributor

PR Category

Execute Infrastructure

PR Types

Devs

Description

Coverage.yml 的 Coverage test job 新增 Upload full coverage to BOS 步骤,把 check_coverage 在 build/ 下生成的全量覆盖率文件按 PR/commit 上传到 BOS,供覆盖率平台按 commit 读取(PaddleFleet 已按同样方式上传):

  • coverage-full.info(C++)
  • python-coverage-full.info(Python)
  • python-coverage.xml(Python)

路径:https://paddle-github-action.bj.bcebos.com/PR/coverage/${PR_ID}/${COMMIT_ID}/<file>,与同 workflow 中 build job 上传 whl 的目录相同,复用其 bos_retry/BosClient.py 和凭据。

步骤放在 Generate coverage information 之后、90% 判定之前,带 if: always() 和 continue-on-error: true:文件不存在时跳过,上传失败不影响覆盖率检查结果。

是否引起精度变化

否

@Paddle-Review-Bot

Paddle-Review-Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Paddle-Bot Review Board (review完成)

序号 位置 优先级 规则来源 状态
1 BOS 上传失败被静默吞掉 P2 仓库规则:安全与错误处理 🚧

可维护性建议(总分 89.7 / 100,只给建议,不影响评审结论)

序号 位置 维度 状态
1 BOS 上传引导逻辑重复 抽象适配度 💡
各维度得分(仅评本 PR 改动,点击展开)
83 抽象适配度
1
85 跨模块架构
85 测试策略
87 错误处理一致性
87 高层优雅度
87 中层优雅度
88 逻辑清晰度
90 底层优雅度
90 依赖健康度
90 未完成迁移
90 设计一致性
92 契约一致性
92 鉴权一致性
94 AI 生成债务
95 命名质量
95 初始化耦合
95 约定偏离
— 类型安全
— API 表面一致性
— 包组织结构

Powered by Nyanpasu claude with Opus 5.5 默认推理级别, please check the suggestions carefully.

Comment on lines +434 to +436
if [ -f "$f" ]; then
python ${{ env.bos_file }} $f paddle-github-action/PR/coverage/${PR_ID}/${COMMIT_ID}
echo "https://paddle-github-action.bj.bcebos.com/PR/coverage/${PR_ID}/${COMMIT_ID}/$f"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 上传失败会被静默吞掉:循环里没有检查 BosClient.py 的退出码,上传失败后第 436 行仍会打印下载 URL;而且这段 bash 的最后一条命令是 done(退出码取自 echo),docker exec 总是返回 0,continue-on-error: true 实际上永远不会生效,步骤在上传失败时仍显示成功。覆盖率平台按 commit 读取这些文件,缺文件时从步骤状态和日志都看不出原因。

建议记录失败、只在成功时打印 URL,并在循环结束后以非零退出(continue-on-error 仍保证不影响覆盖率检查):

rc=0
for f in coverage-full.info python-coverage-full.info python-coverage.xml; do
  if [ -f "$f" ]; then
    if python ${{ env.bos_file }} "$f" paddle-github-action/PR/coverage/${PR_ID}/${COMMIT_ID}; then
      echo "https://paddle-github-action.bj.bcebos.com/PR/coverage/${PR_ID}/${COMMIT_ID}/$f"
    else
      echo "upload $f failed"; rc=1
    fi
  else
    echo "$f not found, skip"
  fi
done
exit $rc

Comment on lines +423 to +431
source ${{ github.workspace }}/../../../proxy
python -m pip install -q bce-python-sdk==0.8.74
export AK=paddle
export SK=paddle
if [ ! -f "${{ env.bos_file }}" ]; then
wget -q --no-proxy -O ${{ env.home_path }}/bos_retry.tar.gz https://xly-devops.bj.bcebos.com/home/bos_retry.tar.gz --no-check-certificate
mkdir -p ${{ env.home_path }}/bos_retry
tar xf ${{ env.home_path }}/bos_retry.tar.gz -C ${{ env.home_path }}/bos_retry
fi

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 可维护性建议(抽象适配度,不阻塞合入):第 423-431 行的 BOS 上传引导(source proxy、安装 bce-python-sdk==0.8.74、导出 AK/SK、按需下载并解压 bos_retry)与同文件 build job 的 Upload coverage product(第 225-234 行)几乎逐行重复,且已出现分叉(pip -q、mkdir -p、缺少 ::group::)。建议抽成 ci/ 下的共享脚本或 .github/actions/ 复合 action,两处只传文件列表和目标前缀,后续升级 SDK 版本或下载地址时只需改一处。

This branch has not been deployed

No deployments
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.

2 participants