限制Jenkins管道构建哪个分支?

时间:2018-10-15 17:03:27

标签: jenkins github jenkins-blueocean

我目前正在配置在AWS的Docker容器上托管的Jenkins服务器。

我正在使用BlueOcean配置存储库。

现在,管道扫描存储库中的所有分支以检测Jenkinsfiles,然后在检测到更改时将自动在该分支上构建。我每5分钟扫描一次回购以检测更改。

但是,如果它是某个随机功能分支,我不想自动运行构建和作业。我试图将自动触发的版本限制为仅更改登台和主分支。

所以我的问题是,如何/在何处配置Jenkins GitHub管道以仅在某些分支上构建而不扫描所有分支?

3 个答案:

答案 0 :(得分:2)

多分支管道工作是您的朋友。

不是试图限制Jenkins哪个分支,而是首先轮询我在Jenkinsfile中所做的事情是每分钟轮询源代码控制:

triggers { pollSCM('* * * * *') }

这将轮询每个分支,并在您在“多分支管道”作业配置中指定的位置和名称中找到Jenkins文件的位置创建一个作业。

  

旁注

     

关于多分支管道中的唯一配置是:

     
      
  1. SCM仓库在哪里?
  2.   
  3. 工作区相对路径和Jenkinsfile的名称。 (如果需要,可以将其称为Bob)
  4.   

多分支管道作业设置了附加的环境变量:BRANCH_NAME,它允许您有条件地在管道中执行操作,如下所示:

script {
    if( "${env.BRANCH_NAME}" == "integration" ) {
        //Do something useful
    }
}

使用此方法,您还可以决定不响应轮询事件。

答案 1 :(得分:1)

我假设您正在使用github插件。我建议使用通用Webhook触发插件-https://wiki.jenkins.io/display/JENKINS/Generic+Webhook+Trigger+Plugin

在存储库上配置Webhook

这个插件很棒,可以让您轻松提取传入的Webhook中的值并在管道中使用它们。对于前。您可以从Webhook的来源提取分支,并且仅在分支为stagingmaster

时构建

在我们的设置中,我们使用一个简单的作业“ webhook触发处理器”,该处理器从所有存储库中读取传入的Webhook,并使用从webhook提取的值触发下游管道。

答案 2 :(得分:1)

管道接受输入参数。因此,您可以创建一个名为 branch 的参数。

在管道内部,您可以使用 regex 仅匹配所需的分支。