我的团队目前正在使用进行源代码管理(TFS)、构建(在签入时触发)和部署(使用VSTS发布管理)。
我们有四个环境(Dev,QA,Int,& Prod),在部署到下一个环境之前,任何代码更改都必须被签署(每个环境的不同方)。
目前,每当向下游环境部署任何更改时,从上游环境到所有的事情都会立即发生;我已经成功地说服了团队和管理层,这种情况需要改变。
当然,这意味着我有责任想办法改变它。我提出了特性分支,但由于我们是在TFS上,团队正将其作为一个太重量级的问题来推动;我将迁移到git,这是管理层原则上同意的,但在未来会被推迟到一个不确定的点。
如果不从TFS更改源代码控制、从VSTS更改构建和发布或实现特性分支,我们如何通过环境管道有选择地促进代码更改?
更新:根据评论,我的目标显然是模糊的,所以我会尽量澄清。我希望,在我们当前的基础设施中,能够将给定环境中的任意子集部署到后续环境中。
例如,假设QA环境中有5项尚未部署到Int,并且测试人员在第2和第5项(基于签入顺序)上签名,但第1、第3和第4项存在缺陷。我们如何在不部署三个有缺陷的更改的情况下,只将两个已签署的更改部署到Int?
发布于 2016-11-20 20:42:26
如果您在这样的环境中面临这样的问题,我建议您不要追求如此小的粒度。
你可能会做什么
发布于 2017-02-19 02:43:27
您还没有解释您目前在TFS中有多少分支。我不确定当前的过程,您遵循的功能发布。对不起,我正在重复下面同样的话。
我认为你可以做的是,有四个分支DEV,QA,INT和PROD。QA分公司应该是开发部门完成工作的最后一条质量保证线。
一个特性可以在DEV分支中进行多个检查,但应该合并到一起,并在合并到QA分支时创建一个变更集。如果修复错误或请求更改,则可以对同一特性从DEV更改到QA进行更多的更改。简而言之,QA分支应该完成并测试代码开发并为发布做好准备。
当功能发布时,QA分支的所有更改集都应该合并为一个变更集到INT分支。在INT环境上成功验证后,应该将其合并到PROD分支,然后从那里部署到PROD环境中。我在这里假设,您的INT环境一旦部署了该特性,它就会在那里停留一段时间,以检查它的稳定性。
从一个分支到另一个分支的选择性合并是这里的主要思想。您还需要为每个环境有单独的构建脚本。
此外,构建脚本应该配置为从各个分支获取代码。
如果您在VCS中没有任何分支,那么很难实现您想要的结果,这将更多的是手工工作而不是自动化。
发布于 2017-01-19 22:35:10
除非将代码保存在单独的分支上,否则不能有选择地为单个特性提升代码。
我同意最好避免使用特性分支。如果在单独的特性分支上测试代码,您将不知道代码在合并时是否正确执行,而且当多个分支共存时,重构变得非常困难,因为一个分支中的重构代码可能无法与另一个分支中的非重构代码一起工作。
您还没有说明为什么需要将特定特性的代码保留在特定环境之外。我将尝试使用配置选项来打开或关闭每个环境中所需的特性,而不是将代码拒之门外。
我还会尝试对任何功能进行广泛的自动化测试,然后再批准。这应该可以保证它不会被未来将要部署的特性中的代码悄悄地打破。
https://softwareengineering.stackexchange.com/questions/336362
复制相似问题