如何在jenkins构建之前自动合并git分支 我有2个版本,用于分支主机和生产
当我进行生产构建时,我想做git merge origin / master。
答案 0 :(得分:17)
这是Jenkins最新的Git插件支持的。只需在作业配置中的Git高级设置下将“Checkout / merge to local branch”设置为“production”。然后将“要构建的分支”设置为master,或者将其留空以让Jenkins尝试合并并构建它找到生产的其他分支。它将为每个分支执行一次合并/构建。它还可以将合并的分支推回到它所从的源。
检查一下: https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-AdvancedFeatures
答案 1 :(得分:2)
您可以通过管道中的扩展块进行预合并(假设您已经配置了 checkout: [ $class: 'GIT_SCM' ]
。)
[
$class: "PreBuildMerge",
options: [
mergeTarget: "master",
fastForwardMode: "FF",
mergeRemote: "origin",
mergeStrategy: "OURS"
]
]
答案 2 :(得分:1)
我发现至少在当前 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'
],
],
]
)