Cake Build自动合并功能

时间:2017-11-02 21:18:24

标签: tfs tfsbuild tfs2017 cakebuild

我正在使用cakebuid作为TFS 2017 Update 2的构建工具,并尝试实现传统的Git Flow。在此流程中,每次更改进入 master 时都会发生一些自动合并,这些更改需要传播到 develop 分支。 使用cake我可以运行PowerShell脚本或使用LibGit2Sharp来完成最佳案例场景的自动合并。但是,当合并发生冲突时呢?我是否需要使整个构建失败,因为合并过程失败了? 我们当然有办法处理TFS中的合并,这只不过是 Pull Request

问题

  

是否有允许我创建的 cake 的任何工具或加载项   在执行构建步骤期间拉取请求

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

最近宣布有一个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 Addin并不会特别难,并通过一组插件公开功能。

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

答案 2 :(得分:0)

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

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问题跟踪器。

希望这有帮助!