【问题标题】:Jenkins Pipeline | Groovy exception handling詹金斯管道 | Groovy 异常处理
【发布时间】:2020-09-03 10:39:20
【问题描述】:

我正在 Jenkins 管道中编写一个 Groovy 脚本,它在远程服务器上执行 shell 脚本。 根据shell脚本的输出,我应该处理异常。

如果 shell 脚本输出 = 'xyz' > 构建成功

如果 shell 脚本输出 != 'xyz' > 抛出异常,构建失败。

任何帮助将不胜感激!

我的脚本

def check()
{
    try 
    {
        println "Check started"
        
        sh "echo -e '' >> Result.txt"
        sh "ssh -q -o StrictHostKeyChecking=no test_agent@Bihkik1123.xyz.com  /home/test_agent/check.sh >> Result.txt"

    
        println "Check completed"
    }
    catch(Exception e) 
    {
       throw e;
    }
}

【问题讨论】:

    标签: shell jenkins groovy cloudbees


    【解决方案1】:

    您可以将阶段标记为失败,以防关键字不匹配,例如。 :

      stage('test') {
            println "Check started"
            sh "echo 'xyz' > /tmp/results.txt"
            
            shellReturn = sh(returnStdout: true, script: """
                cat /tmp/results.txt
            """).trim()
            
            if(shellReturn == /xyz/){
              currentBuild.result = 'SUCCESS'      
            } else{
              println "FAILED"
              currentBuild.result = 'FAILED'
            }
          }
    

    【讨论】:

    • 嘿,谢谢伙计,快到了.. 我们可以使用 IN 运算符代替 == 吗?
    • 我使用了 shellReturn.contains('string to find') 并且成功了,非常感谢 :)