我被委托更新我们的构建流程,以使其更加高效。我花了一周时间阅读最佳实践和策略,但仍未找到解决我们当前问题的方案。
背景:目前我们只有一个庞大的构建/应用程序,需要被拆分成至少四个应用程序,并具有一些共享库。我们目前不会分支,除非绝对必须。我们有一个TeamCity构建,在每次TFS检入时进行构建。当我们准备发布时,我们会进行代码冻结,并且只检入在QA中发现的错误修复。显然,这是一种糟糕的做法,我们终于得到了批准来改变它。
建议的解决方案:拆分应用程序,为每个应用程序设置不同的发布周期,从Ant转移到Maven,并按版本发布进行分支。
分支 - 现在我们只有一个主干在源代码控制中。我认为我们想在准备好发布时从主干分支,并针对在QA中发现的错误更新分支。当构建准备好发布时,将分支更改合并回主干。
以下是我计划如何设置TFS。
考虑到管理所有POM和POM中的版本似乎现在太困难了。我已经阅读了有关Maven发布插件的信息,但我不确定它是否可以按照我们想要的方式进行分支。
下一个问题是让TeamCity工作起来。我考虑为每个应用程序设置3个TeamCity项目。一个开发项目,始终指向主干,一个QA项目,用于测试QA构建,并且一个生产项目,用于构建热修复更改。每次新的版本通过QA时,我都需要更新QA TeamCity项目以指向新的版本分支,并更新TeamCity中的发布版本号。当该版本通过QA时,我必须更新生产TeamCity项目以指向刚刚通过QA的分支,并更新生成的版本号以匹配QA中刚刚通过的版本号。
肯定有比这更好的策略。
问题:
1. 我应该将这些分支文件夹放在哪里?
2. QA构建是否仍然应该是快照,直到构建进入预生产环境?
3. 如何配置TeamCity以获取这些分支,而无需更改每个版本的源路径?
4. 是否应该为每个应用程序设置父POM,以确保开发人员使用的所有依赖项都已编译并更新?
背景:目前我们只有一个庞大的构建/应用程序,需要被拆分成至少四个应用程序,并具有一些共享库。我们目前不会分支,除非绝对必须。我们有一个TeamCity构建,在每次TFS检入时进行构建。当我们准备发布时,我们会进行代码冻结,并且只检入在QA中发现的错误修复。显然,这是一种糟糕的做法,我们终于得到了批准来改变它。
建议的解决方案:拆分应用程序,为每个应用程序设置不同的发布周期,从Ant转移到Maven,并按版本发布进行分支。
分支 - 现在我们只有一个主干在源代码控制中。我认为我们想在准备好发布时从主干分支,并针对在QA中发现的错误更新分支。当构建准备好发布时,将分支更改合并回主干。
以下是我计划如何设置TFS。
+Apps
+App1
+Components
+Core
+Web
+Branches
+App2
+Components
+Core
+Web
+Branches
+Libraries
+Lib1
+Lib2
+Branches
考虑到管理所有POM和POM中的版本似乎现在太困难了。我已经阅读了有关Maven发布插件的信息,但我不确定它是否可以按照我们想要的方式进行分支。
下一个问题是让TeamCity工作起来。我考虑为每个应用程序设置3个TeamCity项目。一个开发项目,始终指向主干,一个QA项目,用于测试QA构建,并且一个生产项目,用于构建热修复更改。每次新的版本通过QA时,我都需要更新QA TeamCity项目以指向新的版本分支,并更新TeamCity中的发布版本号。当该版本通过QA时,我必须更新生产TeamCity项目以指向刚刚通过QA的分支,并更新生成的版本号以匹配QA中刚刚通过的版本号。
肯定有比这更好的策略。
问题:
1. 我应该将这些分支文件夹放在哪里?
2. QA构建是否仍然应该是快照,直到构建进入预生产环境?
3. 如何配置TeamCity以获取这些分支,而无需更改每个版本的源路径?
4. 是否应该为每个应用程序设置父POM,以确保开发人员使用的所有依赖项都已编译并更新?