持续集成痛点
continuous integration pain points
最近,我的初出茅庐的团队(只有两个开发人员)试图实施 Jez Humble 所描述的持续交付实践。
也就是说,我们放弃了功能分支和拉取请求(在 git 中),目标是至少每天提交到主线分支。
我们有一个全面的单元和功能测试套件,用于前端和后端,在推送到 git 时由 Jenkins 自动触发。
我们配置了一个功能切换应用程序,并决定将其用于更长的 运行 个功能。
但是,我们遇到了几个问题,我很想听听成功使用这种方法的人的看法。
由于审查/手动 QA 流程造成的延迟
通常任务足够小,我们认为它们不需要配置功能切换,例如向表单添加额外字段,或更改某些字段标签。但是,由于各种原因,票证会被阻止(例如,任务的某些不可预见的方面需要用户体验输入)。
这意味着在我们等待外部依赖项解锁任务时,主线最终处于受损状态。通常我们会说 "we can't deploy anything until Thursday, as that's when we can get an IA review"
这里的答案可能是对启动哪些任务进行更严格的审查。然而,通常很难完全预见到每一个潜在的阻碍因素。也许如果一个任务被阻止,应该做额外的开发来添加一个功能开关,或者恢复提交?棘手的情况。
主线分支集成期间的代码审查问题
分支和拉取请求很好地细分了对单个任务所做的更改。然而,在尝试 CD 时,我们最终在主线上遇到了一堆不相关的提交,代码审查者不得不以某种方式将与他正在审查的任务相关的提交拼凑在一起。通常会有一些额外的小错误修复,更改以响应任务结束时的审查类型提交。从本质上讲,我们无法找到一种干净的方法来使用此设置进行代码审查工作。
一般代码审查问题
我们使用 phabricator 做了一些 post-commit 代码审查,但发现它会标记每个提交(有些非常小)以进行代码审查,而不是向我们显示每个人的更改列表开发任务。因此,与 git 拉取请求相比,它使审查代码变得繁重。有没有更好的办法?
我们现在已经恢复到 git 中的短暂功能分支并提出拉取请求以启动代码审查,这是一个很好的设置,但如果我们能够解决我们在非-feature分支CD,那么我们想重新尝试这种方法。
如果您在完成任务后使用功能分支来处理任务,您可以将其合并回集成分支,或者为合并回集成分支创建拉取请求。
在这两种情况下,您都会获得合并提交,这是您在功能分支上所做的每项更改的摘要。
您还需要更多的东西吗?
您能否在集成之前将审查过程自动化 and/or 运行。如果你自动化审查过程,例如添加 form/button 等,你只需要一套测试 运行 post 集成来验证你的主线没有被破坏
您需要在集成之前进行代码审查,即在拉取请求中。如果在代码审查期间发现并修复了问题,则会更新拉取请求并且不会弄乱主线。
代码审查工具非常适合一组开发人员,团队 needs.I 建议您试用一些代码审查工具,看看哪个适合您的需求
根据你的大部分问题,我建议在合并之前运行对你所有的Vetting/code评论等进行合并。(如果这个过程太麻烦,你可以逐步完成)和运行为你想做的所有事情设置一套自动化测试post集成。
如果您团队中的流程设置太复杂而无法在一天内完成并且可以进行多次迭代,那么您值得评估 gitflow 的修改版本而不是基于 fork 的CI 型号
最近,我的初出茅庐的团队(只有两个开发人员)试图实施 Jez Humble 所描述的持续交付实践。
也就是说,我们放弃了功能分支和拉取请求(在 git 中),目标是至少每天提交到主线分支。
我们有一个全面的单元和功能测试套件,用于前端和后端,在推送到 git 时由 Jenkins 自动触发。
我们配置了一个功能切换应用程序,并决定将其用于更长的 运行 个功能。
但是,我们遇到了几个问题,我很想听听成功使用这种方法的人的看法。
由于审查/手动 QA 流程造成的延迟 通常任务足够小,我们认为它们不需要配置功能切换,例如向表单添加额外字段,或更改某些字段标签。但是,由于各种原因,票证会被阻止(例如,任务的某些不可预见的方面需要用户体验输入)。
这意味着在我们等待外部依赖项解锁任务时,主线最终处于受损状态。通常我们会说 "we can't deploy anything until Thursday, as that's when we can get an IA review"
这里的答案可能是对启动哪些任务进行更严格的审查。然而,通常很难完全预见到每一个潜在的阻碍因素。也许如果一个任务被阻止,应该做额外的开发来添加一个功能开关,或者恢复提交?棘手的情况。
主线分支集成期间的代码审查问题
分支和拉取请求很好地细分了对单个任务所做的更改。然而,在尝试 CD 时,我们最终在主线上遇到了一堆不相关的提交,代码审查者不得不以某种方式将与他正在审查的任务相关的提交拼凑在一起。通常会有一些额外的小错误修复,更改以响应任务结束时的审查类型提交。从本质上讲,我们无法找到一种干净的方法来使用此设置进行代码审查工作。
一般代码审查问题
我们使用 phabricator 做了一些 post-commit 代码审查,但发现它会标记每个提交(有些非常小)以进行代码审查,而不是向我们显示每个人的更改列表开发任务。因此,与 git 拉取请求相比,它使审查代码变得繁重。有没有更好的办法?
我们现在已经恢复到 git 中的短暂功能分支并提出拉取请求以启动代码审查,这是一个很好的设置,但如果我们能够解决我们在非-feature分支CD,那么我们想重新尝试这种方法。
如果您在完成任务后使用功能分支来处理任务,您可以将其合并回集成分支,或者为合并回集成分支创建拉取请求。
在这两种情况下,您都会获得合并提交,这是您在功能分支上所做的每项更改的摘要。
您还需要更多的东西吗?
您能否在集成之前将审查过程自动化 and/or 运行。如果你自动化审查过程,例如添加 form/button 等,你只需要一套测试 运行 post 集成来验证你的主线没有被破坏
您需要在集成之前进行代码审查,即在拉取请求中。如果在代码审查期间发现并修复了问题,则会更新拉取请求并且不会弄乱主线。
代码审查工具非常适合一组开发人员,团队 needs.I 建议您试用一些代码审查工具,看看哪个适合您的需求
根据你的大部分问题,我建议在合并之前运行对你所有的Vetting/code评论等进行合并。(如果这个过程太麻烦,你可以逐步完成)和运行为你想做的所有事情设置一套自动化测试post集成。
如果您团队中的流程设置太复杂而无法在一天内完成并且可以进行多次迭代,那么您值得评估 gitflow 的修改版本而不是基于 fork 的CI 型号