已关闭
bug: job list 返回的 job_id 字段为空(API 返回 id 而非 job_id) #471
aflyingto创建于  7月14日关闭于  7月14日
aflyingto成员
7月14日 创建

位置

api/queries_actions.go — WorkflowRunJob 结构体

现象

gc actions job list <run-id> -R owner/repo --json 返回的 job 列表中 job_id 字段为空,导致用户无法从 job list 输出获取 job view / job log 所需的 job ID。

复现

# 1. job list 返回 job_id 为空
$ gc actions job list 80406e9273d0421fb86afb20983ce01b -R wangjing_127/MindIE-SD --json
[
  {
    "job_id": "",          // ← 空值
    "name": "codecheck",
    "status": "COMPLETED",
    ...
  },
  ...
]

# 2. job view 需要 job_id,但无法从 job list 获取
$ gc actions job view 80406e9273d0421fb86afb20983ce01b 475d39a5724441708876685418e8ca91 -R wangjing_127/MindIE-SD
# 用 API 原始返回的 id 字段值才能工作

根因

GitCode Actions v8 API GET /api/v8/repos/{owner}/{repo}/actions/runs/{run_id}/jobs 返回的 job 对象使用 id 字段(不是 job_id):

{
  "id": "475d39a5724441708876685418e8ca91",
  "name": "codecheck",
  "status": "COMPLETED",
  ...
}

但 CLI 的 WorkflowRunJob 结构体映射为 json:"job_id":

type WorkflowRunJob struct {
    JobID string `json:"job_id"`  // 应为 json:"id"
    Name  string `json:"name"`
    ...
}

字段名不匹配导致 JobID 始终为空字符串。

修复建议

将 WorkflowRunJob.JobID 的 json tag 从 "job_id" 改为 "id"。

同时检查 WorkflowRunJobStep 结构体中的 job_run_id 字段是否也有类似问题(API 原始返回中 step 也有 job_run_id 字段,需确认是否一致)。

影响

  • 用户无法从 job list 输出获取 job_id,导致 job view 和 job log 命令难以使用
  • JSON 消费者(脚本/AI 代理)无法自动获取 job ID 进行后续操作

环境与关联

  • gc 0.8.0(commit 6ba5d62)
  • 测试仓库:wangjing_127/MindIE-SD(有真实流水线数据)
  • 关联 issue:job view (#449)、job log (#450)、job list (#448)

标签

  • type/bug
  • scope/actions
  • risk/medium
  • status/triage
likedislike
Aaflyingto成员
7月14日 添加了label:risk/mediumscope/actions, status/triage,type/bug
aflyingto成员
7月14日 评论:

根因修正

经代码审查,结构体映射是正确的(WorkflowRunJob.ID 的 json tag 是 "id" 不是 "job_id"),JSON 输出也正确包含 id 字段。

真正的问题是 job list 文本输出(pkg/output/jobs.go 的 printSimple / printTable)没有显示 job.ID 字段,导致用户无法从文本输出获取 job ID 来传给 job view / job log。

修复方案:在 printSimple 和 printTable 输出中增加 job ID 列。

原始 issue 中关于结构体映射的描述有误,以此评论为准。

likedislike
Aaflyingto成员
7月14日 删除了label:status/triage
Aaflyingto成员
7月14日 添加了label:status/verified
Aaflyingto成员
7月14日 添加了label:status/in-progress
Aaflyingto成员
7月14日 关联了pull request:fix(actions): show job ID in job list text output
Aaflyingto成员
7月14日 关闭了 issue
Aaflyingto成员
7月14日 删除了label:status/in-progress
Aaflyingto成员
7月14日 删除了label:status/verified
Aaflyingto成员
7月14日 添加了label:status/merged