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



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

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

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

但是,如果它是一些随机功能分支,我不想自动运行构建和作业。我试图将自动触发的构建限制为仅对暂存和主分支的更改。

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

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

与其试图限制 Jenkins 首先轮询哪些分支,我在 Jenkinsfile 中所做的是每分钟轮询源代码控制:

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

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

旁注

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

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

多分支管道作业设置一个额外的环境变量:BRANCH_NAME允许您在管道中按条件执行操作,如下所示:

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

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

我假设你正在使用github插件。我建议使用通用 Webhook 触发器插件在您的存储库上配置 Webhook - https://wiki.jenkins.io/display/JENKINS/Generic+Webhook+Trigger+Plugin

这个插件很棒,可让您轻松提取传入 webhook 中的值并在管道中使用它们。例如,您可以从 webhook 的来源中提取分支,并且仅在分支stagingmaster时才构建

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

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

在管道中,您可以使用正则表达式仅匹配所需的分支。

相关内容

  • 没有找到相关文章

最新更新