if-statement - Jenkins Pipeline - if 语句总是返回 false
问题描述
我目前有一个问题。我正在使用 openshift 并尝试使用 if 语句,具体取决于单独容器中的集成测试是否成功。这是我的代码片段
podTemplate(....
){
node(myLabel){
container('jnlp'){
...
stage(Integration Tests){
...
script{
def status = sh(script: 'oc describe pod myapps-integration-tests | grep -i status: | awk {\'print $2\'}', returnStdout: true)
echo "Status of Interation Test Job ${status}"
echo status
if("${status}" == "Succeeded"){
echo "Integration tests successfull"
} else {
echo "Integration Tests failed"
error("The integration tests failed.")
}
}
...
}
现在的问题是,这个 if 语句总是返回 false。status 回显为 Succeeded,但该语句仍然返回 false。我尝试过使用和不使用脚本块。我试过了
if(status == "Succeeded")
但仍然。它总是告诉我我的集成测试失败了。如果我用“Succeeded”==“Succeeded”替换语句只是为了测试它按预期通过。有谁知道我做错了什么?
解决方案
您是否尝试过修剪输出?它可能包含空格/新行:
if (status.trim() == "Succeeded")
您可以尝试的其他解决方案:
if (status.contains("Succeeded"))
推荐阅读
- r - 错误:library.dynam(lib、package、package.lib)中“data.table”的包或命名空间加载失败:找不到共享对象“datatable.so”
- ios - 将 DSP 过滤器应用于 iOS 中的数据
- javascript - 未捕获的类型错误:无法读取 Materialize stepper.js 中最接近 null 的属性
- django - 无法使用 request.POST 访问 CheckboxSelectMultiple 的值
- laravel - 在 where 子句中显示选择下拉列表但获取失败的数据
- c++ - What is the issue in following conversion from argv[1] to char * string?
- lua - What is the use of replacing paranthesis with curly brackets when passing parameters to a function?
- html - Angular8 cannot read property of 'valid' of undefined for the form
- ionic-framework - How to make like dislike Blog Post like facebook instagram in Ionic 4
- appium - Appium 没有获取 xpath windows 应用程序的所有元素的列表