我们使用的是 Visual Studio Team Services的。
我们有一个Prod-Branch,由Prod-Build-Definition构建,并由Prod-Release-Definition部署到我们的测试/集成和生产环境。
在将每个Prod-Release部署到客户之后,我们从Prod-Branch创建一个Prod-Rel-Version-x.x.x分支(以防出现Hotfix问题)。
在Sprint期间,我们正在开发Dev分支,该分支由我们的Dev-Build-Definition构建,并由我们的Dev-Release-Definition部署到我们的DEV环境中,以进行开发人员测试。
在Sprint之后(或不时地),Dev-Branch合并到Main-Branch,然后合并到Prod-Branch。从那里将其部署到客户的不同测试阶段。
当有Hotfix-Case时,我们修复Prod-Rel-Version-xxx分支上的错误,并希望重用我们现有的Prod-Build-Definition来构建此Hotfix-Version并由现有Prod部署到不同阶段-Release-Definition,用于测试和使用该版本。
我们如何在这个不同的分支(Prod-Rel-Version-x.x.x分支而不是Prod-Branch)中重复使用Prod-Build-Definition?
当我查看构建定义时,我认为我可以实现,只需将服务器路径(存储库>映射)从$/NameOfOurApp/Prod
修改为$/NameOfOurApp/Prod-Rel-Version-x.x.x)
...这应该有用吗?但是据我所读,无法在服务器映射中使用Build-Variables,因此我无法更改此变量,例如在Queue new Build Dialog中...
完成我的方案的最佳方法是什么?
最佳答案
唯一的方法是创建一个单独的构建定义,该定义将下载所有分支。然后在任务中使用变量来选择要构建的版本。这将很快变得非常困惑(缓慢)。
相反,克隆构建定义要容易得多。或者,您可以从现有的构建定义创建构建定义模板,然后使用该模板来创建新的构建定义。
但是,更好的解决方案是不依赖太多分支。仅在确实需要进行修补程序时才需要分支,而当您在较高阶段有很多发现时,则仅需要阶段分支。通过改善工作方式,您可以摆脱分支机构,简化所有人的工作。
更新
VSTS和TFS 2018现在支持在工作区定义中使用变量。
关于azure-devops - Visual Studio团队服务: Single Build Definition for Multiple Branches,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39786767/