文件最后提交记录最后更新时间
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
README

upload-reports

将测试元数据/结果文件上传至 OpenLibing OBS bucket 的 GitCode Actions 插件。

核心特性 (Features)

  • OIDC 联邦认证免密换证:仓库中不存放任何 AK/SK 密钥。插件通过 @openlibing/huaweicloud-oidc-client SDK 在流水线运行时自动完成: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 同时使用,否则报错。

上下游串联

典型的测试报告流水线中,本插件位于最下游:

  1. 上游 — 元数据采集:metadata-collect 产出测试用例元数据 XML(输出 metadata-output-path)。
  2. 上游 — 测试执行:pytest-orch 执行用例并产出结果文件。
  3. 本插件:将元数据与结果文件上传到 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

贡献与本地调试

  1. Fork 并克隆本仓库:git clone https://gitcode.com/openlibing/test-action.git
  2. 进入插件目录安装依赖:cd upload-reports && npm install
  3. 本地调试:npm run dev(或直接 node src/index.js,需自行准备 ATOMGIT_* 环境变量与 OIDC 令牌环境)
  4. 提交前请确保 npm run build 通过,并将 dist/index.js 一并提交(插件运行时直接引用 dist/)。
  5. 欢迎提交 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-client SDK 自动完成 OIDC 换证 + V11-HMAC-SHA256 签名