如果存储库有新的提交,则构建管道作业

时间:2018-04-04 07:00:38

标签: git jenkins jenkins-pipeline pre-commit-hook

我最近为项目分配了新成员,因为它太大了,每天都有多次提交。 jenkins服务器上有多个作业,这些作业是从这个特定的仓库中构建的,我需要一种方法来确保每次新的提交都会在jenkins作业中触发构建。我知道这可以很容易地在带有钩子的自由风格作业中实现,但问题是我的所有工作都是管道工作并且让Jenkinsfiles构建它们。

因此,我需要找到一种方法来实现构建(对于对存储库的每次提交),从Jenkins文件中为管道作业实现。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

让我们首先明确一下,在git中为每个提交构建一个,你首先需要创建一个钩子或类似的东西,它会将提交推送到分支,否则无法从jenkins服务器访问提交,除非你不运行jenkins每台开发者机器或者都有码头化的jenkinses。

下一步,您可以使用以下代码:

stage('Checkout') {
            checkout([$class                           : 'GitSCM',
                      branches                         : [[name: '**']],
                      doGenerateSubmoduleConfigurations: false,
                      extensions                       : [],
                      submoduleCfg                     : [],
                      userRemoteConfigs                : [[credentialsId: 'CREDENTIALS',
                                                           name         : 'origin',
                                                           refspec      : '+refs/pull/*:refs/remotes/origin/pr/* +refs/heads/*:refs/remotes/origin/*',
                                                           url          : 'REPO URL TO CHECK OUT']]])

        }

并在Jenkins作业配置页面中输入此配置 - http://prntscr.com/j0m6aq

因此,这意味着,检查将尝试每分钟轮询scm,下面的代码将确保为所有活动分支轮询scm并拉出具有新更改的请求。对于第一次运行,它将显然检查所有branchec,然后它将仅对具有新更改的分支执行jenkins文件。