| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |
upload-reports
将测试元数据/结果文件上传至 OpenLibing OBS bucket 的 GitCode Actions 插件。
核心特性 (Features)
- OIDC 联邦认证免密换证:仓库中不存放任何 AK/SK 密钥。插件通过
@openlibing/huaweicloud-oidc-clientSDK 在流水线运行时自动完成:CI 流水线 OIDC ID Token → 华为云 STS 换临时凭证 → V11-HMAC-SHA256 签名 +X-Security-Token→ 上传文件到 APIG/OBS。全程零永久密钥。 - 双归档模式:支持流水线模式(
pipeline-id/pipeline-run-id/job-id)与标签模式(label+ 可选archive-path)。提供label即进入标签模式并忽略所有流水线参数。 - 环境变量自动回退:流水线模式的三个参数缺省时自动从
ATOMGIT_WORKFLOW_ID/ATOMGIT_RUN_ID/ATOMGIT_JOB_RUN_ID读取,无需手动传入。 - 运行时
node16:uses路径为openlibing/test-action/upload-reports@<tag>(下文示例统一使用@v2.0.0,请按最新标签替换)。
上传测试报告示例 workflow
快速上手 (Quick Start)
流水线模式
在工作流目录下创建 .gitcode/workflows/upload-pipeline.yml:
permissions:
repository: read
id-token: write # 必须声明此权限,否则无法申请 OIDC ID Token
jobs:
upload:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: openlibing/test-action/upload-reports@v2.0.0
with:
files: metadata_test.xml results.xml
pipeline-id: ${{ env.ATOMGIT_WORKFLOW_ID }}
pipeline-run-id: ${{ env.ATOMGIT_RUN_ID }}
job-id: ${{ env.ATOMGIT_JOB_RUN_ID }}
流水线模式下三个 ID 参数均可省略,插件会自动从对应环境变量回退读取。
标签模式(带自定义归档路径)
创建 .gitcode/workflows/upload-label.yml:
permissions:
repository: read
id-token: write # 必须声明此权限,否则无法申请 OIDC ID Token
jobs:
upload:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: openlibing/test-action/upload-reports@v2.0.0
with:
files: metadata_test.xml
label: performance
archive-path: 2026/08
权限要求 (Permissions)
流水线必须声明 id-token: write 权限,否则插件无法向平台申请 OIDC ID Token:
permissions:
repository: read
id-token: write # 必须声明此权限,否则无法申请 OIDC ID Token
输入参数 (Inputs)
| 参数 | 必填 | 默认值 | 说明 |
|---|---|---|---|
files |
是 | - | 上传文件路径,空格分隔,例如 "metadata.xml results.xml" |
pipeline-id |
否 | - | 流水线 ID,标签模式时忽略;未指定则回退到环境变量 ATOMGIT_WORKFLOW_ID |
pipeline-run-id |
否 | - | 流水线运行 ID;未指定则回退到 ATOMGIT_RUN_ID |
job-id |
否 | - | 作业 ID;未指定则回退到 ATOMGIT_JOB_RUN_ID |
label |
否 | - | 归档标签(如 performance、precision、simulation),仅允许字母数字、下划线、连字符、点,≤256 字符 |
archive-path |
否 | - | 自定义归档路径,必须与 label 同时使用;不允许包含 ..;仅允许字母数字、斜杠、连字符、下划线、点、空格,≤256 字符 |
输出参数 (Outputs)
| 参数 | 类型 | 说明 |
|---|---|---|
success |
boolean |
上传是否成功(true/false) |
status-code |
number |
HTTP 响应状态码 |
response-text |
string |
HTTP 响应文本 |
如何使用输出参数
在调用步骤上添加 id,后续步骤通过 ${{ steps.<id>.outputs.<参数名> }} 引用:
steps:
- uses: actions/checkout@v4
- name: Upload reports
id: upload
uses: openlibing/test-action/upload-reports@v2.0.0
with:
files: metadata_test.xml results.xml
label: smoke
- name: Check upload result
run: |
echo "success = ${{ steps.upload.outputs.success }}"
echo "status-code = ${{ steps.upload.outputs.status-code }}"
echo "response = ${{ steps.upload.outputs.response-text }}"
模式说明
- 标签模式:提供
label后忽略所有 pipeline 参数;提供archive-path时最终归档路径为/{label}/{archive_path}/{filename}。 - 流水线模式:未提供
label时启用,需同时具备pipeline-id、pipeline-run-id、job-id(缺省项自动从上述环境变量回退)。 archive-path必须与label同时使用,否则报错。
上下游串联
典型的测试报告流水线中,本插件位于最下游:
- 上游 — 元数据采集:
metadata-collect产出测试用例元数据 XML(输出metadata-output-path)。 - 上游 — 测试执行:
pytest-orch执行用例并产出结果文件。 - 本插件:将元数据与结果文件上传到 OpenLibing OBS 归档。
串联示例:
permissions:
repository: read
id-token: write # 必须声明此权限,否则无法申请 OIDC ID Token
jobs:
e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Collect metadata
id: collect
uses: openlibing/test-action/metadata-collect@v1.0.2
with:
testcase-path: tests
- name: Run tests
id: orch
uses: openlibing/test-action/pytest-orch@v1.0.2
with:
metadata-file: ${{ steps.collect.outputs.metadata-output-path }}
- name: Upload reports
uses: openlibing/test-action/upload-reports@v2.0.0
with:
files: ${{ steps.collect.outputs.metadata-output-path }} ${{ steps.orch.outputs.testcase-file }}
label: smoke
贡献与本地调试
- Fork 并克隆本仓库:
git clone https://gitcode.com/openlibing/test-action.git - 进入插件目录安装依赖:
cd upload-reports && npm install - 本地调试:
npm run dev(或直接node src/index.js,需自行准备ATOMGIT_*环境变量与 OIDC 令牌环境) - 提交前请确保
npm run build通过,并将dist/index.js一并提交(插件运行时直接引用dist/)。 - 欢迎提交 Issue 与 Pull Request 到 openlibing/test-action。
开源协议 (License)
本项目基于 Mulan PSL v2 开源协议发布,详见仓库根目录 LICENSE 文件。
变更说明
v2.0.0 — 从 AK/SK 认证切换为 OIDC 联邦认证:
- 移除
openlibing-secret输入参数(不再需要配置永久 AK/SK 密钥) - 流水线需声明
permissions: id-token: write权限 - 通过
@openlibing/huaweicloud-oidc-clientSDK 自动完成 OIDC 换证 + V11-HMAC-SHA256 签名