一尘不染

使Jenkins管道等待服务器启动

jenkins

我目前正在开始将我们的构建转换为Jenkins构建管道。在某些时候,我们有必要等待docker容器中Web应用程序的启动。

我的想法是使用这样的东西:

timeout(120) {
    waitUntil {
        sh 'wget -q http://server:8080/app/welcome.jsf -O /dev/null'
    }
}

不幸的是,这使管道构建失败:

错误:脚本返回了退出代码4

有什么简单的方法可以使这项工作吗?

编辑:

我设法使用下面的代码使其工作,但是该阶段仍标记为失败(尽管构建继续并且最后标记为绿色)。

timeout(120) {
    waitUntil {
        try {
            sh 'wget -q http://server:8080/app/welcome.jsf -O /dev/null'
            return true
        } catch (exception) {
            return false
        }
    }
}

阅读 258

收藏
2020-07-25

共1个答案

一尘不染

他们刚刚发布了新版本的“ 管道节点和流程插件”,它增加了对返回退出状态的支持。这似乎现在可以完成工作:

timeout(5) {
    waitUntil {
       script {
         def r = sh script: 'wget -q http://remoterhoste/welcome.jsf -O /dev/null', returnStdout: true
         return (r == 0);
       }
    }
}
2020-07-25