删除分支上的Github钩子事件导致Jenkins Job失败

时间:2019-03-02 18:44:40

标签: jenkins github jenkins-pipeline hook

在Jenkins中,我配置了一个管道,该管道可以在以“ release”开头的任何Github分支上进行更改时运行。 为此,我使用Github钩子触发器和匹配表达式“ origin / release / *”的分支说明符。

在我们的git工作流程中,这些分支并不能永远存在,因此它们经常被删除。

我期望的是在每个发行分支的每次提交上触发管道。 但是,删除分支后也会触发管道。

如何忽略管道中的删除分支事件? 我已经尝试过在删除分支后不从Github发送事件,但是似乎没有任何选择。删除分支后,“推送”事件选项将发送事件。

谢谢!

2 个答案:

答案 0 :(得分:0)

我设法解决了我的问题。 这是我开始管道的方式:

node('staging') {
        GIT_PROJECT_NAME = "myrepo"
        stage("clone repository") {
                git credentialsId: "${GIT_PROJECT_NAME}",
                    url: "git@github.com:${GIT_PROJECT_NAME}.git"

                scmVars = checkout scm
                branch = scmVars.GIT_BRANCH
                sh ('git checkout ${branch}')
        }

其背后的想法是检出触发管道的分支。 但是,无论分支如何,都会导致管道被触发。

这是我解决的方法:

node('staging') {
    GIT_PROJECT_NAME = "myrepo"
    stage("clone repository") {
            scmVars = checkout scm
            branch_tmp = scmVars.GIT_BRANCH
            branch = branch_tmp.replace("origin/","")
            git branch: "${branch}",
                credentialsId: "${GIT_PROJECT_NAME}",
                url: "git@github.com:${GIT_PROJECT_NAME}.git"
    }

有了这个,我不需要“手动”签出正确的分支。 此解决方案有效,现在仅当在与我的分支说明符匹配的分支上进行推送时才触发管道。

答案 1 :(得分:0)

这没什么大不了的。 让它失败。好像没受伤。