【问题标题】:Cake Build auto merge functionalityCake Build 自动合并功能
【发布时间】:2017-12-14 00:12:13
【问题描述】:

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

问题

是否有任何 cake 工具或插件可以让我创建 Pull Request 在构建步骤执行期间?

【问题讨论】:

    标签: tfs tfsbuild cakebuild


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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 使用此工具。

      【讨论】:

        【解决方案3】:

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

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

        希望对您有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-07
          • 1970-01-01
          • 2018-11-03
          • 1970-01-01
          相关资源
          最近更新 更多