我在Linux Box中使用最新的Jenkins。我试图创建一个管道与脚本块如下;
pipeline {
agent any
stages {
stage('TestStage') {
steps {
script {
sh "testfile.sh"
}
}
}
}
}
testfile.sh
将返回如下json文本;
{
"Worker": [
{
"Status": "running"
}
]
}
Status
可以是running
或success
或failure
。如果是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。