如何在 Jenkins 构建之前自动合并 Git 分支?
我有 2 个版本,一个用于分支master
,一个用于生产。
我想origin/master
在进行生产构建时进行 Git 合并。
如何在 Jenkins 构建之前自动合并 Git 分支?
我有 2 个版本,一个用于分支master
,一个用于生产。
我想origin/master
在进行生产构建时进行 Git 合并。
Jenkins 上最新的 Git 插件支持这一点。只需在作业配置中的 Git 高级设置下设置Checkout/merge to local branch
。production
然后将其设置Branches to build
为 master,或者将其留空,让 Jenkins 尝试合并并构建它找到的每个其他分支到生产环境。
它将merge/build
为每个分支做一个。它还可以将合并的分支推回它从中提取的源。
看看这个:
https ://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-AdvancedFeatures
您可以通过管道中的扩展块进行预合并(假设您checkout: [ $class: 'GIT_SCM' ]
已经配置。)
[
$class: "PreBuildMerge",
options: [
mergeTarget: "master",
fastForwardMode: "FF",
mergeRemote: "origin",
mergeStrategy: "OURS"
]
]
我发现至少在当前 Jenkins Dragas 的解决方案中几乎是正确的。合并策略必须是他们的(或 RECURSIVE_THEIRS,因为插件不提供 THEIRS),因为插件会检查 origin/master 并将分支合并到它上面,而不是将 origin/master 合并到分支上。
我还发现缺少一些上下文。并且合并命令需要设置电子邮件和用户名:
checkout(
[
$class: 'GitSCM',
extensions: [
[
$class: "PreBuildMerge",
options: [
mergeTarget: "master",
fastForwardMode: "FF",
mergeRemote: "origin",
mergeStrategy: "RECURSIVE_THEIRS"
],
],
[
$class: 'UserIdentity',
email: 'user@company.com',
name: 'user123'
],
],
]
)