如何通过GitLab Runner的authentication_token获取对应Runner ID
通过GitLab Runner Token查询Runner ID实现方案
核心逻辑
GitLab v4 API 支持通过匹配Runner Token的方式获取对应ID,你需要提前准备好对应GitLab实例的个人访问令牌(PAT),确保PAT拥有read_api权限,若查询的是共享Runner还需要开通管理员权限。
具体查询方法
调用GitLab的Runner列表接口,过滤匹配你持有的Token即可返回对应ID,curl示例如下:
# 替换下方占位符为你的实际参数 GITLAB_URL="https://gitlab.example.com" PAT="你的GitLab个人访问令牌" RUNNER_TOKEN="从config.toml或gitlab-runner list命令中获取的Runner Token" curl --header "PRIVATE-TOKEN: $PAT" "$GITLAB_URL/api/v4/runners?per_page=100" | jq --arg token "$RUNNER_TOKEN" '.[] | select(.token == $token) | .id'
- 如果你的GitLab实例Runner总数超过100,需要处理分页参数,循环拉取所有页的Runner数据再做匹配
- 如果是项目专属Runner,可调用对应项目的
/projects/项目ID/runners接口缩小查询范围,提升查询效率
自动缩容流程优化建议
你提到的缩容流程中部分操作可直接使用Runner Token完成,无需额外查询ID,可简化流程:
- 注销Runner可直接调用
POST /api/v4/runners/remove接口,仅需传入token参数即可完成操作,示例:
curl --request POST "$GITLAB_URL/api/v4/runners/remove" --form "token=$RUNNER_TOKEN"
- 检查Runner活跃任务、暂停Runner的操作确实需要使用Runner ID,拿到ID后即可调用对应API执行后续操作
内容的提问来源于stack exchange,提问作者DavidGamba
相关产品推荐
相关产品推荐

