Cake Build 自动合并功能

Cake Build auto merge functionality

我正在使用 cakebuid as my build tool for TFS 2017 Update 2 and trying to implement the traditional Git Flow。在此流程中,每次更改进入 master 时都会发生一些自动合并,这些更改需要传播到 develop 分支。 使用 cake 我可以 运行 一个 PowerShell 脚本或使用 LibGit2Sharp 来完成最佳情况下的自动合并。但是,当合并发生冲突时怎么办?我是否需要因为合并过程失败而使整个构建失败? 我们当然有一些东西要处理 TFS 中的合并,这就是 Pull Request.

问题

Is there any tool or add-in for cake that allows me to create Pull Request during the execution of a build step?

我认为没有任何加载项可供您创建拉取请求,但由于您可以 运行 PowerShell,您可以轻松地使用 TFS rest api 创建拉取请求

https://www.visualstudio.com/en-us/docs/integrate/api/git/pull-requests/pull-requests

最近宣布有一个 VSTS CLI:

https://blogs.msdn.microsoft.com/devops/2017/11/15/introducing-the-new-cli-for-vsts/

其中包括创建拉取请求的能力:

https://docs.microsoft.com/en-gb/cli/vsts/get-started?view=vsts-cli-latest#create-a-pull-request

我认为创建一个包装此工具并通过一组插件公开功能的 Cake 插件不会特别困难。

与此同时,您可以 shell 使用 Cake 中当前存在的 Process aliases 使用此工具。

最后,我有时会花时间创建包:

Nuget:https://www.nuget.org/packages/Cake.Tfs.AutoMerge

GitHub: https://github.com/mabreuortega/Cake.Tfs

您现在可以使用的方式类似这样:

Task("Merge")
    .Does(c => {
        CreateAutoMergePullRequest(
            new AutoMergeSettings 
            {
                        // Required
                CollectionUri = "https://{instance}/{collection-name}",
                ProjectName = "project-name",
                RepositoryName = "repository-name",
                SourceBranch = "refs/heads/release/1.0.0",
                TargetBranch = "refs/heads/develop",
                Title = "[Auto Merge from Release]",

                        // Optional
                Description = "Brief description of the changes about to get merge",

                        // Control
                DeleteSourceBranch = false,
                SquashMerge = false,
                OverridePolicies = true,
                AutoComplete = true,
                AutoApprove = true
            });
    });

如有任何建议,请使用 GitHub 问题跟踪器。

希望对您有所帮助!