gitlab-ci-runner - 如何使用 jobs API 检查 runner 当前是否正在运行作业

标签 gitlab-ci-runner gitlab-api

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

我知道哪些是活跃的并且可以接受作业,但不知道哪些当前正在运行它们。

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

最佳答案

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

以下脚本使用 :

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

关于gitlab-ci-runner - 如何使用 jobs API 检查 runner 当前是否正在运行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60723587/

相关文章:

makefile - 是否可以在 Gitlab CI 中仅重建更新的文件?

Gitlab 覆盖范围徽章不起作用

python - 使用 setuptools 从私有(private) Gitlab 包存储库安装 Python 包

graphql - 如何使用GraphQL界面从GitLab部署中检索所有用户?

docker - 如何使用gitlab ci测试和部署我的php应用程序?

gitlab - 未显示作业工件

docker - 具有 Docker 执行程序克隆问题的 OmniBus GitLab CE Multirunner

GitLab:多项目管道中的作业工件

gitlab - 如何获取: merge_request_iid if know CI_BUILD_ID and CI_PROJECT_ID?

junit - 如何将 xUnit 和 jUnit 测试结果发布到 gitlab