Pet*_*ter 4 continuous-integration github jenkins jenkins-pipeline jenkins-blueocean
我目前正在配置托管在 AWS 中的 Docker 容器上的 Jenkins 服务器。
我正在使用 BlueOcean 来配置存储库。
现在,管道会扫描存储库上的所有分支以检测 Jenkinsfile,然后在检测到更改时自动在该分支上进行构建。我每 5 分钟扫描一次存储库以检测更改。
但是,如果它是某个随机功能分支,我不想自动运行构建和作业。我试图将自动触发的构建限制为仅在临时分支和主分支中进行更改。
所以我的问题是,如何/在哪里配置 Jenkins GitHub 管道以仅在某些分支上构建而不是扫描所有分支?
多分支管道作业是您的朋友。
我在 Jenkinsfile 中所做的不是尝试限制 Jenkins 首先轮询的分支,而是每分钟轮询源代码控制:
triggers { pollSCM('* * * * *') }
Run Code Online (Sandbox Code Playgroud)
这将轮询每个分支并创建一个作业,在您在多分支管道作业配置中指定的位置和名称中找到 Jenkinsfile。
边注
关于多分支管道中的唯一配置是:
- SCM 仓库在哪里?
- Jenkinsfile 的工作区相对路径和名称。(如果你愿意,你可以叫它鲍勃)
多分支管道作业设置一个附加环境变量:BRANCH_NAME,它允许您有条件地在管道中执行操作,如下所示:
script {
if( "${env.BRANCH_NAME}" == "integration" ) {
//Do something useful
}
}
Run Code Online (Sandbox Code Playgroud)
使用此方法,您还可以决定不执行任何操作来响应轮询事件。