我正在使用cakebuid作为TFS 2017 Update 2的构建工具,并尝试实现传统的Git Flow。在此流程中,每次更改进入 master 时都会发生一些自动合并,这些更改需要传播到 develop 分支。 使用cake我可以运行PowerShell脚本或使用LibGit2Sharp来完成最佳案例场景的自动合并。但是,当合并发生冲突时呢?我是否需要使整个构建失败,因为合并过程失败了? 我们当然有办法处理TFS中的合并,这只不过是 Pull Request 。
问题
是否有允许我创建的 cake 的任何工具或加载项 在执行构建步骤期间拉取请求?
答案 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问题跟踪器。
希望这有帮助!