【发布时间】:2017-07-27 08:50:47
【问题描述】:
假设我们正在使用 Jenkins、Teamcity 或其他工具在 github 中构建(CI)每个拉取请求,并在构建成功时合并 PR。每个 PR 都必须建立在最新的分支上。想知道人们是如何做到这一点的吗?
PRs Start Time Jenkins Build Build Finished PR1 (10:00) ---> Building(30 mins) -->10:30 ----> Merged in Develop PR2 (10:05) ---> Building(30 mins) -->10:35 ----> Merged in Develop PR3 (10:10) ---> Building(30 mins) -->10:40 ----> Merged in Develop
我对这种方法有疑问。 PR1 合并到开发分支后(10:30),PR2 和 PR3 不再在最新分支上构建,它们处于开发分支的旧状态(PR1 合并之前)。
在 Github 中,有一个选项可以确保受保护的分支在合并之前是最新的。 “要求分支在合并之前是最新的”。如果我们选择这个选项,PR2 和 PR3 不能在开发中合并,我们会为 PR 启用“更新分支”按钮,这将确保 PR 是从开发分支重新建立的。
现在 PR2 和 P3 是基于开发分支重新构建的,但没有在最新代码上进行验证,所以我们再次构建它们。这需要更多时间来构建每个 PR。它就像构建的 2 到 3 次。
你们是如何在你们的组织中实现这一目标的?
【问题讨论】:
标签: git github jenkins continuous-integration teamcity