已关闭
feat(actions): 支持官方 Actions 插件目录及使用说明查询 #551
wangwq129创建于  8月29日关闭于  9月2日
wangwq129成员
8月29日 创建

状态

🚧 开发中

本地开发中。

背景

GitCode Actions 插件市场已提供官方插件目录及插件使用说明接口,但 gitcode-cli 当前缺少对应的 typed command。使用者需要通过原始 API 才能查询可用插件和插件 README,不利于日常使用和脚本集成。

提案

新增以下两个只读命令:

gitcode actions plugin list

查询指定仓库当前可用的官方 Actions 插件。

  • API:GET https://web-api.gitcode.com/api/v2/projects/{project}/actions/plugins/all
  • 默认自动获取全部分页,不限制返回数量
  • 支持 --limit、--page、--per-page、--paginate 和 --json

gitcode actions plugin view <plugin-name>

查询指定插件的元信息、版本及 Markdown 使用说明。

  • API:GET https://web-api.gitcode.com/api/v2/projects/{project}/actions/plugins/detail?name={plugin_name}
  • 默认输出 vision_content[] 中各版本的 README
  • --json 原样输出完整详情响应

验收标准

关联

  • Actions 能力跟踪:#517
likedislike
Wwangwq129成员
8月29日 添加了label:featurescope/actionsscope/api
Wwangwq129成员
8月29日 修改了issue 的描述
Wwangwq129成员
8月29日 修改了issue 的描述
aflyingto成员
9月1日 评论:

验证记录

  • 当前版本或分支: main @ d6889cb
  • 复现命令: ./gc actions --help(确认无 plugin 子命令);rg -i "plugin" api/queries_actions.go(确认无 plugin 查询函数)
  • 实际结果: actions 子命令树仅注册 run/job/artifact/runner/runner-group/runner-set/yaml/workflow,无 plugin;api 包无任何 plugin 端点函数;api-doc submodule 不含 actions/plugins 端点(openapi.json 无 plugin/web-api/projects.*actions 引用)
  • 结论: 功能确认不存在,需求有效,进入开发

实现方案(已与用户确认)

  • 端点 host web-api.gitcode.com 独立于默认 api.gitcode.com,现有 Client 的 SSRF 防护(rawURL 仅允许 c.host)会阻止该 host
  • 方案:在 api 包新增 RawRESTToHost 方法,对 web-api.gitcode.com 做白名单放行,保持对其他 host 的 SSRF 防护
  • 两个端点:GET /api/v2/projects/{project}/actions/plugins/all(list)、GET /api/v2/projects/{project}/actions/plugins/detail?name={name}(view)

关联

  • Actions 能力跟踪:issue 517
likedislike
Aaflyingto成员
9月1日 添加了label:status/in-progress, status/verified
Aaflyingto成员
9月1日 关联了pull request:feat(actions): add plugin list/view commands for Actions plugin directory
aflyingto成员
9月1日 评论:

开发进度

  • 根因: 需新增 gc actions plugin list/view 命令查询 web-api.gitcode.com 上的 Actions 插件目录
  • 主要修改:
    • api/client.go: 新增 RawRESTToHost 方法(host 白名单,SSRF 安全)
    • api/queries_actions_plugins.go: ListActionsPlugins、ViewActionsPlugin + 灵活解析
    • pkg/cmd/actions/plugin/{list,view}: 两个只读命令(--json、分页、-R)
    • docs/COMMANDS.md: 文档同步
  • 测试: go test ./... 全部通过;表格驱动 + testutil mock
  • 实际命令验证: infra-test/gctest1 上 host 可达、端点存在、认证有效(HTTP 418 因 infra-test 无 Actions 插件)
  • 安全影响: Token 经 Bearer header 注入;RawRESTToHost 白名单仅放行已知 GitCode host;gitleaks 通过
  • 风险或未覆盖项: api-doc 不含该端点文档;真实数据路径待平台仓库验证
  • 关联 PR: PR 520
likedislike
Wwangwq129成员
9月1日 关联了pull request:feat(actions): add plugin list and view commands
Aaflyingto成员
9月2日 关闭了 issue
Aaflyingto成员
9月2日 添加了label:status/merged