如何在Jenkins中创建一个脚本循环,根据shell命令收到的json继续或返回成功/错误到管道?



我在Linux Box中使用最新的Jenkins。我试图创建一个管道与脚本块如下;

pipeline {
agent any
stages {
stage('TestStage') { 
steps {
script {
sh "testfile.sh"
}
}
}
}
}

testfile.sh将返回如下json文本;

{
"Worker": [
{
"Status": "running"
}
]
}

Status可以是runningsuccessfailure。如果是running,代码必须再次调用testfile.sh并检查状态。如果是success,管道必须继续下一步,如果是failure,管道必须终止。这有可能实现吗?

谢谢。

您可以通过创建一个while循环来实现,该循环执行脚本,读取输出并检查其值,直到给定的超时,当状态不再是running时,您可以检查结果并根据最终状态失败构建。
类似于:

pipeline {
agent any
stages {
stage('TestStage') {
steps {
script {
timeout(time: 1, unit: 'HOURS') {  // timeout for the 'running' period
def status = sh script: 'testfile.sh', returnStdout: true
while (status == 'running') {
sleep time: 10, unit: 'SECONDS'  // sleep between iterations
def output = sh script: 'testfile.sh', returnStdout: true
def dict = readJSON text: output
status = dict.Worker.Status
}
}
if(status == 'failure'){
error "Operation has ended with status 'failure'"
}
}
}
}
}
}

您可以在相关步骤中找到更多信息:sleep, timeout, error和readJSON。

相关内容

  • 没有找到相关文章

最新更新