【发布时间】:2009-05-26 03:43:38
【问题描述】:
我确信这是其他人以前解决过的常见问题,因此我呼吁其他开发人员/项目经理的集体智慧寻求帮助。
我有很多项目:
- 应用
- Web 应用程序
- 服务器应用程序
- 开发实用程序
- ORM
所有应用程序/实用程序都依赖于 ORM:当 ORM 更改时,需要对其进行编译,并且所有应用程序都需要针对它重新编译然后部署。现在我的 VCS 结构有点混乱:
- 应用名称
- 后备箱
- 应用
- Web 应用程序
- 服务器应用程序
- Dev Utils(目前大约 4 个文件夹,但还在增加)
- ORM
- 释放
- 项目名称(无论是应用程序还是 WebApp)版本号
- 分支机构
- ExperimentName_DevName
- 后备箱
理想情况下,我希望每个应用程序(Application/WebApp/ORM 等)都有一个根文件夹,每个应用程序都有自己的 Trunk/Branches/Releases 等,以在逻辑上和物理上将它们分开。我的理由是,由于在应用程序上完成了大量工作,并且它被更频繁地发布,每个发布分支都有相同实用程序的相同副本等。此外,检查主干以处理它总是意味着所有其他项目随之而来。
但是,分离意味着将某些项目从解决方案中剥离出来,同时修改任何项目是一件痛苦的事情——在 2-3 个 IDE 之间切换(尤其是在更改 ORM 时)。
我正在考虑这个问题,因为我很快就会组装一台 CI 机器(在一周左右的时间里准备好回答有关这方面的问题)并且我正在尝试找出一种方法来自动创建发布/部署。通常,只有应用程序被部署,通过脚本复制到所有工作站在启动时从中拉出的服务器,但就像我之前所说的,如果 ORM 更改/发布,所有其他应用程序都应该重新构建和部署。
(今天我破坏了我们的网站和 3 个实用程序,因为我更改了 ORM 并使用更新版本的应用程序部署它,但忘记使用新的 ORM 重建/部署其他应用程序 - 哎呀。)
【问题讨论】:
-
你的IDE可以同时加载多组项目吗?例如,Eclipse 的工作集对此有很大帮助。另外,每个模块的更改频率如何?
-
关于 CI,您可以在此处查看/搜索 TeamCity、Electric Can 和 CruiseControl,看看其他人做了什么。
-
1) 我以前没有以这种方式使用过 Visual Studio。每个解决方案可以有多个项目(目前 Application 和 ORM 是同一个解决方案中的 2 个项目。不过我不确定是否有多个解决方案。2)经过深思熟虑和研究,我决定使用 TeamCity 或 Hudson 作为 CI服务器(倾向于前者)
-
另外:应用程序几乎每天都在变化,并带有一些小功能。 ORM 可能每周更改一次,我创建/使用的 1 个实用程序每周更改一次或两次,而其他大多数实用程序在过去 6 个月中可能更改一次或两次(并且在 ORM 更改时才重新构建)
-
我肯定会拆分你的 CI,这样每个功能块都是独立的,如果依赖于它的任何东西发生变化,就会被触发。
标签: version-control continuous-integration