25

如何在 Jenkins 构建之前自动合并 Git 分支?

我有 2 个版本,一个用于分支master,一个用于生产。

我想origin/master在进行生产构建时进行 Git 合并。

4

3 回答 3

20

Jenkins 上最新的 Git 插件支持这一点。只需在作业配置中的 Git 高级设置下设置Checkout/merge to local branchproduction

然后将其设置Branches to build为 master,或者将其留空,让 Jenkins 尝试合并并构建它找到的每个其他分支到生产环境。

它将merge/build为每个分支做一个。它还可以将合并的分支推回它从中提取的源。

看看这个:
https ://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-AdvancedFeatures

于 2013-07-28T21:31:27.967 回答
2

您可以通过管道中的扩展块进行预合并(假设您checkout: [ $class: 'GIT_SCM' ]已经配置。)

[
        $class: "PreBuildMerge",
        options: [
            mergeTarget: "master",
            fastForwardMode: "FF",
            mergeRemote: "origin",
            mergeStrategy: "OURS"
        ]
]
于 2021-01-21T09:22:58.473 回答
2

我发现至少在当前 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'
            ],
        ],
    ]
)
于 2021-02-18T09:12:31.723 回答