Gitlab ci runner 如何使用作业API检查运行程序当前是否正在运行作业

Gitlab ci runner 如何使用作业API检查运行程序当前是否正在运行作业,gitlab-ci-runner,gitlab-api,bash,curl,jq,python,Gitlab Ci Runner,Gitlab Api,Bash,Curl,Jq,Python,我想检查哪些运行者当前正在运行作业,但我无法使用API找到任何可以提供此信息的内容 我知道哪些人是活跃的,可以接受工作,但不知道那些在当前时间实际运行的人 因此,我的问题是,如何确定哪些运行者当前正在处理作业您可以列出所有运行者,获取他们的ID,然后为每个运行者检查是否有状态为正在运行的作业: 使用/runners/all 使用/runners/$runner\u id/jobs?状态=正在运行 以下脚本使用和: #/bin/bash 令牌=您的\u令牌 domain=your.domain

我想检查哪些运行者当前正在运行作业,但我无法使用API找到任何可以提供此信息的内容

我知道哪些人是活跃的,可以接受工作,但不知道那些在当前时间实际运行的人


因此,我的问题是,如何确定哪些运行者当前正在处理作业

您可以列出所有运行者,获取他们的ID,然后为每个运行者检查是否有状态为
正在运行的作业

  • 使用
    /runners/all
  • 使用
    /runners/$runner\u id/jobs?状态=正在运行
以下脚本使用和:

#/bin/bash
令牌=您的\u令牌
domain=your.domain.com
ids=$(curl-s-H“PRIVATE-TOKEN:$TOKEN”“https://$domain/api/v4/runners/all”|\
jq“[].id”)
设置--$ids
因为我
做
结果=$(curl-s)\
-H“专用令牌:$TOKEN”\
“https://$domain/api/v4/runners/$i/jobs?status=running”| jq.| length')
如果[$result-等式0];然后
echo“runner$i未运行作业”
其他的
echo“runner$i正在运行$result作业”
fi
完成
输出:

runner 6未运行作业

runner 7正在运行1个作业

运行程序8未运行作业

使用:

导入请求
导入json
token=“您的令牌”
domain=“your.domain.com”
r=requests.get(
f'https://{domain}/api/v4/runners/all',
headers={“PRIVATE-TOKEN”:TOKEN}
)
ids=[i[“id”]表示json.loads中的i(r.text)]
对于ID中的i:
r=requests.get(
f'https://{domain}/api/v4/runners/{i}/jobs?status=running',
headers={“PRIVATE-TOKEN”:TOKEN}
)
num_jobs=len(json.loads(r.text))
如果作业数>0:
打印(f'runner{i}正在运行{num_jobs}jobs')
其他:
打印(f'runner{i}未运行作业')

在我意识到(当然)您需要一个具有查看跑步者信息权限的帐户的访问令牌之前,我认为这个脚本已经崩溃,而普通用户通常不需要。具体来说,访问令牌需要作用域
read\u api
(除此之外没有其他内容),并且需要用于具有查看运行者信息的正确权限的用户,我相信在实例级别上只能是管理员。