【问题标题】:After triggering a Jenkins job remotely via a Bash script, when should I retrieve the job id?通过 Bash 脚本远程触发 Jenkins 作业后,我应该何时检索作业 ID?
【发布时间】:2019-02-04 11:32:59
【问题描述】:

我已经构建了一个脚本 trigger_jenkins_job.sh,它现在可以正常工作。它主要由三个功能组成:

input_checkpoint 
run_remotejob         #: Running Jenkins job remotely using Json api.
sleep 10              #: 10 sec estimated time until pending duration is over 
                         #and Jenkins job start running, i.e. a given slave was 
                         #assigned to run the job.
get_buildID           #: Retrieving build state, last build ID and last stable 
                         #build ID using 

问题是我想摆脱睡眠 10 秒。同时,我想在执行函数 get_buildID 之前确定远程触发的作业实际上是在节点上运行的。

这样我将检索触发作业的 id,而不是触发该作业之前队列中的最后一个。

关于作业的 Jenkins 文件,我指定:

agent {
        label 'linux-node'
    }

所以,我想问题是,我需要一些如何通过 bash 脚本来测试 linux-node 是否正在运行远程触发的作业,如果是,我执行函数 get_buildID。

【问题讨论】:

  • 让你的 run_remotejob 在运行时返回 true 值,基于此你可以触发其余的作业,无需等待任何事情

标签: bash jenkins agent


【解决方案1】:

摆脱 sleep 命令,使用wait 命令。

【讨论】:

  • 不,不是这样,问题是在确保代理 linux-node 正在运行远程触发的作业之前,我不应该运行 get_buildID 函数
  • 啊,我明白了。另一种常见的方法是使用 /tmp 文件。本质上,让 linux 节点设置一个 /tmp 文件,然后让您的脚本检查该文件是否存在。如果是这样,你就知道这个过程已经开始了。
【解决方案2】:

如果您使用令牌触发 Job,它命令本身应该返回您的 buildNumber。 另一种方式可能是 REST API。请在此处查看“nextBuildNumber”字段(如果构建仍在等待中),否则为“number”

【讨论】:

    猜你喜欢
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多