如何查询匹配指定标签与环境的GitHub自托管runner列表
筛选符合标签和环境条件的GitHub自托管Runner方法
你提到的runs-on配置采用标签交集匹配规则:只有同时拥有数组内所有标签的自托管runner才会被选中执行作业,你需要查询的就是同时满足self-hosted、management-control-plane、以及对应环境标签(即${{ needs.env.outputs.env }}的实际输出值,比如dev、prod等)的runner,可通过以下两种方式查询:
1. 网页端可视化查询
无需写代码,直接在GitHub页面操作即可:
- 仓库级runner查询路径:对应仓库 → 「Settings」→ 侧边栏「Code and automation」分类下的「Actions」→ 「Runners」
- 组织级runner查询路径:对应组织主页 → 「Settings」→ 侧边栏「Code, planning, and automation」分类下的「Actions」→ 「Runners」
在runner列表顶部的搜索框输入筛选规则即可,示例规则如下(假设环境值为prod):
label:self-hosted label:management-control-plane label:prod
筛选结果会直接展示所有符合条件的runner,状态为online的即为当前可用的runner。
2. 命令行/脚本批量查询
可通过GitHub官方的gh命令行工具实现批量查询,提前完成gh安装和账号登录后,执行对应命令即可:
仓库级runner查询命令
将占位符替换为实际值后执行:
gh api repos/<用户名/组织名>/<仓库名>/actions/runners --jq '.runners[] | select(.labels[].name == "self-hosted" and .labels[].name == "management-control-plane" and .labels[].name == "<实际环境值>") | {id: .id, name: .name, status: .status, labels: [.labels[].name]}'
组织级runner查询命令
将占位符替换为实际值后执行:
gh api orgs/<组织名>/actions/runners --jq '.runners[] | select(.labels[].name == "self-hosted" and .labels[].name == "management-control-plane" and .labels[].name == "<实际环境值>") | {id: .id, name: .name, status: .status, labels: [.labels[].name]}'
返回结果会展示所有符合条件的runner的ID、名称、运行状态、全量标签列表。
内容的提问来源于stack exchange,提问作者PKonstant
相关产品推荐
相关产品推荐

