【发布时间】:2021-10-22 18:55:54
【问题描述】:
有没有一种更有效的方法来获取 RunDeck 项目中每个作业的最新执行情况,方法是 (1) 查询作业列表,然后 (2) 串行查询每个作业的 max: 1 执行列表?
【问题讨论】:
标签: rundeck
有没有一种更有效的方法来获取 RunDeck 项目中每个作业的最新执行情况,方法是 (1) 查询作业列表,然后 (2) 串行查询每个作业的 max: 1 执行列表?
【问题讨论】:
标签: rundeck
获取所有作业最后执行的最有效方法是获取 ID,将 ID 放入列表中,然后根据 this 答案调用执行端点。
我使用jq 做了一个有效的 bash 示例,看看:
#!/bin/sh
# protocol
protocol="http"
# basic rundeck info
rdeck_host="localhost"
rdeck_port="4440"
rdeck_api="40"
rdeck_token="RQvvsGODsP8YhGUw6JARriXOAn6s6OQR"
# project name
project="ProjectEXAMPLE"
# first get all jobs (of ProjectEXAMPLE project)
jobs=$(curl -s --location "$protocol://$rdeck_host:$rdeck_port/api/$rdeck_api/project/$project/jobs" --header "Accept: application/json" --header "X-Rundeck-Auth-Token: $rdeck_token" --header "Content-Type: application/json" | jq -r .[].id)
# just for debug, print all jobs ids
echo $jobs
# then iterates on the jobs id's and extracting the last succeeded execution
for z in ${jobs}; do
curl -s --location "$protocol://$rdeck_host:$rdeck_port/api/$rdeck_api/job/$z/executions?status=succeeded&max=1" --header "Accept: application/json" --header "X-Rundeck-Auth-Token: $rdeck_token" --header "Content-Type: application/json" | jq
done
遗憾的是,没有直接的方法可以在一次调用中做到这一点。
【讨论】: