如何检查跑步者当前是否 运行 使用工作 API 的工作

How to check if runner is currently running a job using jobs API

我想检查哪些跑步者目前是 运行 工作,但我找不到任何可以使用 API 给我此信息的信息。

我知道哪些是活跃的并且可以工作但不知道那些实际上是运行他们在当前时间。

所以我的问题是,我如何确定哪些跑步者当前正在处理工作

您可以列出所有跑步者,获取他们的 ID,然后为每个跑步者检查是否有状态为 running:

的工作

以下 script uses and

#!/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

使用

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')