使用 untilEach openshift jenkins 客户端插件检查 openshift 中最后构建的状态
Check status of last build in openshift using untilEach openshift jenkins client plugin
我想使用 openshift jenkins 客户端插件检查最新的构建状态。按照官方文档here
stage('Start build') {
steps {
script {
openshift.withCluster() {
openshift.withProject('my-project') {
openshift.selector("bc", "app_name").startBuild()
}
}
}
script {
openshift.withCluster() {
openshift.withProject('my-project') {
def builds = openshift.selector("bc", "app_name").related('builds')
timeout(5) {
builds.untilEach(1) {
return (it.object().status.phase == "Complete")
}
}
}
}
}
}
}
上面的代码开始一个新的构建,然后检查所有相关的 builds
' 状态到 build config
。我希望它检查已启动的构建的状态。
它检查所有以前的相关构建的状态是否也是 Complete
。让我们来看下面的例子:
以前的旧版本
构建 #1 - 完成
构建 #2 - 失败
构建 #3 - 完成
构建 #4 - 完成
当我在 Jenkins 中执行管道时 - 一个新的 Build #5
开始,我希望上面的代码只检查 Build #5
的状态是否为 Complete
。但是此代码检查所有构建(构建 #1 到构建 #5)是否处于 Complete
状态。因此,管道一直等到所有 5 个构建都为 Complete
并最终超时并且 jenkins 构建失败。
我只希望它检查最新(最后)构建的状态。该文档没有这方面的示例,但它应该是可能的。我可以模糊地理解它必须可以通过使用 watch
但不确定如何执行它。
感谢您的帮助。
经过大量研究,答案就在我面前。只需在前面的 startBuild
步骤中添加 "--wait"
参数。
openshift.selector("bc", "app_name").startBuild("--wait")
如果构建失败,这将 return 一个非零代码并且 stage
也会失败。
我想使用 openshift jenkins 客户端插件检查最新的构建状态。按照官方文档here
stage('Start build') {
steps {
script {
openshift.withCluster() {
openshift.withProject('my-project') {
openshift.selector("bc", "app_name").startBuild()
}
}
}
script {
openshift.withCluster() {
openshift.withProject('my-project') {
def builds = openshift.selector("bc", "app_name").related('builds')
timeout(5) {
builds.untilEach(1) {
return (it.object().status.phase == "Complete")
}
}
}
}
}
}
}
上面的代码开始一个新的构建,然后检查所有相关的 builds
' 状态到 build config
。我希望它检查已启动的构建的状态。
它检查所有以前的相关构建的状态是否也是 Complete
。让我们来看下面的例子:
以前的旧版本
构建 #1 - 完成
构建 #2 - 失败
构建 #3 - 完成
构建 #4 - 完成
当我在 Jenkins 中执行管道时 - 一个新的 Build #5
开始,我希望上面的代码只检查 Build #5
的状态是否为 Complete
。但是此代码检查所有构建(构建 #1 到构建 #5)是否处于 Complete
状态。因此,管道一直等到所有 5 个构建都为 Complete
并最终超时并且 jenkins 构建失败。
我只希望它检查最新(最后)构建的状态。该文档没有这方面的示例,但它应该是可能的。我可以模糊地理解它必须可以通过使用 watch
但不确定如何执行它。
感谢您的帮助。
经过大量研究,答案就在我面前。只需在前面的 startBuild
步骤中添加 "--wait"
参数。
openshift.selector("bc", "app_name").startBuild("--wait")
如果构建失败,这将 return 一个非零代码并且 stage
也会失败。