首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins管道:如果上游作业不存在,则防止作业失败

Jenkins管道:如果上游作业不存在,则防止作业失败
EN

Stack Overflow用户
提问于 2019-10-22 09:13:08
回答 1查看 227关注 0票数 1

在我的Jenkins中,我有一个Groovy管道脚本,它在之后触发多个作业:

代码语言:javascript
复制
 stage('Build other pipelines') {

        steps {
            build job: "customer-1/${URLEncoder.encode(BRANCH_NAME, "UTF-8")}", propagate: true, wait: false
            build job: "customer-2/${URLEncoder.encode(BRANCH_NAME, "UTF-8")}", propagate: true, wait: false
            build job: "customer-3/${URLEncoder.encode(BRANCH_NAME, "UTF-8")}", propagate: true, wait: false
        }
    }

现在,我在一个特性分支上进行开发,例如只为客户2开发feature/ISSUE-123,所以作业customer-1/ISSUE-123customer-3/ISSUE-123并不存在。我怎么能告诉詹金斯在这种情况下不要失败?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-22 09:28:36

考虑提取一个名为safeTriggerJob的新方法,该方法将build步骤与捕捉异常的try-catch块包装在一起,从而让管道继续运行。

代码语言:javascript
复制
pipeline {
    agent any

    stages {
         stage("Test") {
             steps {
                 safeTriggerJob job: "job2", propagate: true, wait: false
             }
         }
    }
}

void safeTriggerJob(Map params) {
    try {
        build(params)
    } catch (Exception e) {
        echo "WARNING: ${e.message}"
    }
}

输出:

代码语言:javascript
复制
[Pipeline] Start of Pipeline (hide)
[Pipeline] node
Running on Jenkins in /home/wololock/.jenkins/workspace/sandbox-pipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] build
[Pipeline] echo
WARNING: No item named job2 found
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

或者,与提取专用方法不同,您可以直接在steps块中添加try-catch,但在本例中,您需要用script包装它,如下所示:

代码语言:javascript
复制
pipeline {
    agent any

    stages {
         stage("Test") {
             steps {
                 script {
                     try {
                         build job: "job2", propagate: true, wait: false
                     } catch (Exception e) {
                         echo "WARNING: ${e.message}"
                     } 

                     // The next build inside its own try-catch here, etc.                        
                 }
             }
         }
    }
}   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58500857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档