使用 CruiseControl.Net 构建标记项目

发布于 2024-07-26 18:18:11 字数 657 浏览 9 评论 0原文

我的经理要求我为我们的项目设置构建自动化。 我决定使用 CruiseControl.Net 作为我们的持续集成服务器,因为其他一些团队成员对此有一些经验,而我没有 - 这就是为什么我很乐意承担这项任务。

我们使用 Subversion 作为存储库,最终目标是在每次标记项目时实例化构建。 例如:

将文件夹添加到 svn://svn/tags/ProjectX/ 例如 svn://svn/tags/ProjectX/JulyCheckPoint 应该将新添加的标签 (svn://svn/tags/ProjectX/JulyCheckPoint) 签出到本地目录 (D:\temp\tags\ProjectX\JulyCheckPoint) 并运行 nant 文件 (D:\temp\tags\ProjectX\ JulyCheckPoint\nant.build)

我知道 CruiseControl 能够监视 svn://svn/tags/ProjectX/ 的更改,但我不确定如何将最新标签检出到构建服务器的本地磁盘并运行如果我不知道最新标签的名称,则在 nant.build 中。 我做了一些谷歌搜索,并相信 svn post-commit hooks 可能是我应该研究的东西。

我希望这一切都有意义,如果您需要更多详细信息/说明,请告诉我。 任何指导/建议将不胜感激。

干杯。

my manager has asked me to setup build automation for our projects. I have decided to use CruiseControl.Net as our continuous integration server as some other team members have a little experience with it, I have none - which is why I am happy to undertake this task.

We are using Subversion as our repository and the ultimate goal is to instantiate a build each time a project is tagged. So for example:

Adding a folder to svn://svn/tags/ProjectX/ such as svn://svn/tags/ProjectX/JulyCheckPoint
should checkout the newly added tag (svn://svn/tags/ProjectX/JulyCheckPoint) to a local directory (D:\temp\tags\ProjectX\JulyCheckPoint) and run a nant file (D:\temp\tags\ProjectX\JulyCheckPoint\nant.build)

I know CruiseControl is able to monitor svn://svn/tags/ProjectX/ for changes, but I am unsure as to how I am going to checkout the latest tag to the build server's local disk and run the nant.build within if I don't know the the name of the most recent tag. I have done a bit of googling and believe that svn post-commit hooks may be something I should look into.

I hope all that makes sense, please let me know if you require further details/clarification. Any guidance/advice would be greatly appreciated.

Cheers.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

淡墨 2024-08-02 18:18:11

由于您知道如何监视 /svn/tags/ProjectX/ 的更改,因此您可以让它触发 nant 脚本。 该脚本可以针对 svn 执行命令(请参阅 http:// 中的 svn 任务nantcontrib.sourceforge.net/release/0.85/help/tasks/index.html)来查看 /svn/tags/ProjectX/ 中的最新文件夹。 从这里,您可以使用此 nant 脚本通过 nant 任务调用签出文件夹中的 nant 脚本。

Since you know how to monitor /svn/tags/ProjectX/ for changes, you can have it trigger a nant script. This script can execute commands against svn (see svn tasks in http://nantcontrib.sourceforge.net/release/0.85/help/tasks/index.html) to checkout the latest folder in /svn/tags/ProjectX/. From here you can use this nant script to call the nant script in checked out folder using the nant task.

养猫人 2024-08-02 18:18:11

这并没有回答你的问题,但我很好奇你为什么选择从标签而不是 HEAD 构建?

通常,每次对源代码存储库进行更改时,都会使用持续集成来构建项目代码,以便及早发现问题。

我真的很喜欢 Martin Fowler 的这篇文章。 当我开始使用持续集成时,它对我帮助很大。

This doesn't answer your question but I am curious about why you are choosing to build from tags rather than HEAD?

Typically continuous integration is used to build your project code every time changes are made to your source code repository so that problems are caught early.

I really like this article by Martin Fowler. It helped me a lot when I started using continuous integration.

蓝咒 2024-08-02 18:18:11

我认为你可以做到这一点的唯一方法是使用 svn:externals 我认为并设置一个指向你的标签的存储库。

svn propget svn:externals blah

然后进行检查,例如 svn checkout http://svn/repos/blah

在 CruiseControl.NET 中放入

<checkExternals>True</checkExternals>
<checkExternalsRecursive>True</checkExternalsRecursive>

在该项目的配置中

the only way that I think that you can do this is to use svn:externals I think and setup a repository pointed at your tag.

svn propget svn:externals blah

and then do a checkout against that e.g svn checkout http://svn/repos/blah

In CruiseControl.NET put

<checkExternals>True</checkExternals>
<checkExternalsRecursive>True</checkExternalsRecursive>

in your config for that project

云之铃。 2024-08-02 18:18:11

感谢所有帮助的家伙。 我决定尝试一下 acloutier 的建议,并为每个项目制作静态 nant 文件,这些 nant 文件始终位于构建服务器上。

CruiseControl.Net(在构建服务器上设置)监视每个项目的标签存储库并触发适当的静态 nant 文件。 然后,此 nant 文件运行一些 C# 代码,确定 svn://svn/tags/ProjectX/ 位置中最后添加的文件夹的名称。

知道最后添加的文件夹的名称允许我将 svn://svn/tags/ProjectX/ 下最近标记的项目 svn-checkout 到本地位置,并在项目中运行 nant 文件。

如果有人需要任何代码片段或说明,我很乐意在工作时提供。 谢谢您的帮助!

Appreciate all the assistance dudes. I decided to give acloutier's suggestions a shot and made static nant files for each project, these nant files always sit on the build server.

CruiseControl.Net (setup on the build server) monitors the tags repository for each project and fires the appropriate static nant file. This nant file then runs some C# code that determines the name of the last added folder in the svn://svn/tags/ProjectX/ location.

Knowing the name of the last added folder allows me to svn-checkout the most recently tagged project under svn://svn/tags/ProjectX/ to a local location and run the nant file within the project.

If anyone requires any code snippets or clarification I'll gladly provide them when I get into work. Thanks for the help!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文