我想检查哪些运行者当前正在运行作业,但我找不到任何可以使用 API 提供此信息的内容。
我知道哪些是活跃的并且可以接受作业,但不知道哪些当前正在运行它们。
所以我的问题是,我如何确定哪些运行者当前正在处理作业
最佳答案
您可以列出所有运行者,获取他们的 ID,然后针对每个运行者检查是否有状态为正在运行
的作业:
- List all runners API使用
/runners/all
- List Runner jobs使用
/runners/$runner_id/jobs?status=running
#!/bin/bash
token=YOUR_TOKEN
domain=your.domain.com
ids=$(curl -s -H "PRIVATE-TOKEN: $token" "https://$domain/api/v4/runners/all" | \
jq '.[].id')
set -- $ids
for i
do
result=$(curl -s \
-H "PRIVATE-TOKEN: $token" \
"https://$domain/api/v4/runners/$i/jobs?status=running" | jq '. | length')
if [ $result -eq 0 ]; then
echo "runner $i is not running jobs"
else
echo "runner $i is running $result jobs"
fi
done
输出:
runner 6 is not running jobs
runner 7 is running 1 jobs
runner 8 is not running jobs
使用python :
import requests
import json
token = "YOUR_TOKEN"
domain = "your.domain.com"
r = requests.get(
f'https://{domain}/api/v4/runners/all',
headers = { "PRIVATE-TOKEN": token }
)
ids = [ i["id"] for i in json.loads(r.text) ]
for i in ids:
r = requests.get(
f'https://{domain}/api/v4/runners/{i}/jobs?status=running',
headers = { "PRIVATE-TOKEN": token }
)
num_jobs = len(json.loads(r.text))
if num_jobs > 0:
print(f'runner {i} is running {num_jobs} jobs')
else:
print(f'runner {i} is not running jobs')
关于gitlab-ci-runner - 如何使用 jobs API 检查 runner 当前是否正在运行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60723587/