与Subversion和CVS的持续集成

时间:2012-02-05 13:16:40

标签: svn build continuous-integration jenkins configuration-management

在我目前正在进行的项目中,我们同时使用Subversion和CVS。开发人员通常会开发代码并签入CVS / Subversion。

当编码完成并且所有内容都已经过检查时,我们使用测试标签标记存储库,并使用TEST标签检出代码进行正式测试。

我们不使用trunc标记,而是使用上一个标记:

- Tag RELEASE.0.1 as PROJ-ABC-LIVE.1.3
- Tag revision 12 as PROJ-ABC-LIVE.1.3 (new changes not part of RELEASE.0.1)

以上内容确保只有最新版本的文件+新版本的文件才会使用新版本标签进行标记,从而排除任何未经过测试的文件。

当测试完成并且对代码进行任何其他更改(作为测试结果)时,代码将被标记为LIVE标记。 LIVE标记是签出并部署到LIVE服务器上的代码。

在任何时候,存储库的截断都可以包含人们所做的任何数量的更改。在某些情况下,人们会检查“正在进行”且不完整的代码更改。有人办理入住手续并进行为期两周的假期是完全正常的。

这里的示例是我们的存储库中的修订文件的示例状态

1.4
1.5
1.6 PROJ-ABC-TEST.0.1
1.7 
1.8 PROJ-ABC-TEST.0.2
1.9 PROJ-ABC-LIVE.1.3
1.10
1.11

当我们发布版本时,我们会使用标签PROJ-ABC-LIVE.1.3查看所有内容并将其作为正式版本提供。不包括修订版1.10和1.11,因为这些是目前在trunc中的新修改。

我很难理解在这种情况下如何使用Jenkins或Hudson之类的东西。如果我们引入它,它究竟会为我们做些什么呢。

如果我们确实介绍它,那么它不是每次都会构建相同的版本吗?我们只使用标签构建,所以如果我介绍Jenkins / Hudson,我将不得不将其配置为按标签构建。它不只是每次运行时构建PROJ-ABC-LIVE.1.3吗?除非可以使用最新的标签进行构建。

我所看到的关于如何使用CI的大多数示例是,每当存储库中存在更改(提交)时,大多数人都会从trunc构建。如果人们签入不完整的工件,这将如何工作?如果trunc永远不稳定(我不打算这样做),我真的没有看到从TRUNC构建的好处是什么。

也许我对CM不是很了解但是如何发布一些由Trunc构建的东西?我想我的问题是

  • 如何在包含不完整工件的情况下使用CI
  • 如果标签用于所有交付,CI环境每次运行时都不会重新构建相同的代码吗?标记的快照永远不会改变 - 因此CI环境没有用处?
  • 如果我们不从trunc构建,CI是否有用?从Trunc构建的好处究竟是什么?
  • 如果它能够检测是否已经应用了新的LIVE标记并从中构建,那么我认为它可能对我们有用的唯一方法。这可能吗?
  • 还有其他可能对我们有益的情况吗?

由于

1 个答案:

答案 0 :(得分:3)

简短的回答(因为@JB严重暗示)是你根本没有使用CI过程 - 所以CI服务器对你没什么帮助。我强烈建议您的团队切换到CI流程。这是关于它的全部内容seminal paper by Martin Fowler。祝你好运!