【问题标题】:Getting most recent execution by job via RunDeck API通过 RunDeck API 按作业获取最新执行
【发布时间】:2021-10-22 18:55:54
【问题描述】:

有没有一种更有效的方法来获取 RunDeck 项目中每个作业的最新执行情况,方法是 (1) 查询作业列表,然后 (2) 串行查询每个作业的 max: 1 执行列表?

【问题讨论】:

    标签: rundeck


    【解决方案1】:

    获取所有作业最后执行的最有效方法是获取 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
    

    遗憾的是,没有直接的方法可以在一次调用中做到这一点。

    【讨论】:

    • 我认为这个电话仍然只适用于特定的工作?
    • 我更新了我的答案,我留下了一个 bash 示例,该示例从所有作业(来自特定项目)中获取所有最后成功的执行。希望对您有所帮助!
    • 感谢您的回答,但这是我已经在做的事情。当你有数百个工作时,这非常慢,所以我的问题是是否有比这更有效的选择——理想情况下是单个 API 调用。但这似乎是不可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 2021-08-15
    • 2023-02-08
    • 2013-08-31
    • 1970-01-01
    相关资源
    最近更新 更多