我想设置一个持续集成系统,在提交或类似触发器时应该:
- 如果需要,在 fortran/C/C++ 代码上运行测试。
- 使用 cmake 编译该代码。
- 在 Rails 应用程序上运行测试。
- 编译rails ap。
- 重新启动服务器。
我在看詹金斯。它是这种工作的最佳选择吗?另外,使用 bash 脚本(如果可能的话)和使用 jenkins 有什么区别?我问不是因为我正在考虑使用脚本,而是为了更好地理解詹金斯。
我想设置一个持续集成系统,在提交或类似触发器时应该:
我在看詹金斯。它是这种工作的最佳选择吗?另外,使用 bash 脚本(如果可能的话)和使用 jenkins 有什么区别?我问不是因为我正在考虑使用脚本,而是为了更好地理解詹金斯。
我将 Jenkins 用于 java 项目,不得不说它很容易配置。我曾经添加很多插件来更好地配置构建步骤,但由于两个主要原因,我倾向于使用脚本语言来构建和部署步骤。如果我有构建脚本,在不同的 Jenkins 服务器上配置相同的作业或手动运行脚本会更容易,如果需要,构建配置不会那么混乱(我仍然有一个 maven 作业,包含 50 多个构建后步骤) . 第二个原因是,与在 SVN 中构建配置相比,在 SVN 中对脚本进行版本控制更容易。
所以来回答你的问题。我不知道它是否是“最好的”工具,但它对我来说已经足够好了。关于脚本:使用每个工具来构建它。Jenkins 是一个荣耀的 cron 守护程序,在显示分析方面有很多选择。人们使用它的学习曲线很小(即开始工作,看看它是否失败。)配置 Jenkins 需要更多的学习,但是设置简单的工作然后转到更复杂的任务非常容易。
听起来詹金斯肯定是一个合理的选择。除了作为构建步骤运行任意脚本的能力之外,还有大量的插件,例如可以更好地与 cmake 集成。
即使您使用单个 bash 脚本来完成所有这些工作,在其之上使用 Jenkins 仍然具有许多优势。您可以免费获得 Web 界面、电子邮件通知和构建历史记录,以及所有这些。通过将您的测试“正确地”与 Jenkins 集成,您还可以获得图表之类的东西,这些图表显示了随着时间的推移有多少测试成功/失败。
对于前四个活动,Jenkins 将完成这项工作,并且是当今最好的选择,但是对于重新启动服务器(实际上是“远程执行”)之类的事情,最好看看:
或者:
Fabric(Python) 或 Capistrano(Ruby) 之类的库也可能很有用。