限制Jenkins pipeline构建哪个分支?

Pet*_*ter 4 continuous-integration github jenkins jenkins-pipeline jenkins-blueocean

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

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

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

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

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

And*_*ray 5

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

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

triggers { pollSCM('* * * * *') }
Run Code Online (Sandbox Code Playgroud)

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

边注

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

  1. SCM 仓库在哪里?
  2. Jenkinsfile 的工作区相对路径和名称。(如果你愿意,你可以叫它鲍勃)

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

script {
    if( "${env.BRANCH_NAME}" == "integration" ) {
        //Do something useful
    }
}
Run Code Online (Sandbox Code Playgroud)

使用此方法,您还可以决定不执行任何操作来响应轮询事件。

  • 顺便说一句,还有内置条件 https://jenkins.io/doc/book/pipeline/syntax/#when `when {branch 'master' }` (2认同)