用于嵌入式软件的构建(CI)服务器

时间:2012-12-10 15:06:16

标签: build embedded continuous-integration build-automation

我想问一下您使用嵌入式系统构建服务器的经验。你在用什么(如果有的话),有什么好的和坏的。

我们主要针对没有操作系统的微控制器进行开发。

此刻我正在尝试使用Jenkins并且我的构建正在运行。但我对项目结构有一些问题。当我想要所有插件工作时,我需要平坦的工作结构。但我们很少有并行开发的项目,然后工作视图开始变得混乱。 我试过文件夹,但是有些插件停止了工作。

我想构建一个运行顺序的管道,但内部有并行作业。例如。提交阶段有:编译,lint检查,样式检查,单元测试。所有这些都可以并行运行,当所有这些都成功时,下一个阶段就会被执行。

此时我从构建服务器需要的是:

  • 构建管道支持
  • 基于LDAP的用户授权
  • 并行作业执行
  • 分层项目(项目/配置组)
  • 来自xUnit,Lint,编译器警告,机器人框架的报告。
  • 奴隶/代理商支持,奴隶的标签

  • 基于ldap组的权限

  • 每个组/项目的权限

我开放了任何建议,开源和商业。 我看着Bamboo的视频看起来很不错,但我还没试过。

我们有两个开发团队,正在开发不同的项目。为团队分组项目和分组权限可能会很好。一个组的成员不应该修改其他组的构建。但是“拥有”比“必须拥有”更“好”。

TeamCity的

我尝试使用TeamCity。构建构建管道比在Jenkins中更容易,只需单击添加步骤。

我发现困难的一件事是在一个配置中并行执行步骤。例如,在提交之后我想并行运行Lint,单元测试,编译以节省一些时间。我找到solution,但它使管道更难以查看和维护。

TeamCity支持解决作业分组问题的项目中的多个配置。我没有找到将项目分组的选项。

2 个答案:

答案 0 :(得分:4)

TeamCity是来自JetBrains的免费的基于Java的CI服务器。我们已经非常成功地使用它(针对非常不同类型的项目),我会毫无保留地向您推荐它。满足您的每个要求:

  • 构建管道配置为构建配置中的一系列步骤。项目可以具有任意数量的配置,而这些配置又可以具有任意数量的步骤。
  • 完全支持LDAP集成。
  • 构建管道可以并行执行。 TeamCity将工作委托给构建代理,构建代理通常是具有执行构建配置步骤所需的所有必要工具(框架等)的不同服务器。 TeamCity的免费版本附带三个代理的许可证,因此您最多可以并行运行三个版本。其他代理商可以象征性的费用获得许可。
  • 通过“分层项目”,我理解你的意思是一个构建管道的完成将自动触发后续管道的启动。这是受支持的,并且可以在各阶段之间传递构建/版本号以保持一致性。
  • XUnit拥有一流的支持。 Lint /编译器报告可以保存为构建的“工件”,以便以后轻松查看。实质上,许多框架都在TeamCity中具有内置支持,并且对于其他任何可以执行任意shell命令的框架,其输出可以保存为工件或在后续构建步骤中使用。
  • 如上所述,Slave / agent支持是TeamCity模型的核心。

所有这些都是高度可配置和可定制的。我们已经能够通过TeamCity做很多不同的复杂事情,并且它对我们来说已经非常稳固和稳定。它看起来也不错 - 服务器仪表板以易于理解的方式排列信息。

答案 1 :(得分:2)

免责声明:我为Atlassian工作,所以我有点偏颇。

在Bamboo中配置构建管道非常容易。 Bamboo根据计划→阶段→工作结构运作,从高级到低级列出。查看Bamboo Plan Structure

Bamboo中的每个项目都包含一系列计划。计划由一个或多个阶段组成。阶段按顺序运行,由一个或多个作业组成。作业并行运行,由一个或多个任务组成(任务按顺序运行,但可以放在单独的作业中,以便它们并行运行并加快构建时间)。 Bamboo中的代理是执行构建步骤的机器或服务。整个作业将在单个代理上执行。您可以阅读有关代理here的更多信息。至于奴隶标签,使某些代理专门与某些构建或项目挂钩的能力列在新功能的短名单上。

回答你的其他观点:

  • 基于ldap groups / project的LDAP /权限的用户授权:您可以连接到外部LDAP服务器来管理用户和权限。 Bamboo具有组功能,或者如果您的团队正在使用JIRA,您可以利用JIRA组来设置全局权限,规划权限,还可以指示哪些用户将收到有关计划构建结果的通知。全局权限控制谁有权访问构建计划和Bamboo服务器,而计划权限控制谁可以对计划及其作业执行特定操作。

  • 分层项目(项目/配置组):Bamboo确实支持parent&儿童计划结构。有几种方法可以设置触发构建。其中之一是将触发器基于其他构建,即,计划构建由其他计划的先前成功构建触发,或者如果其他构建成功构建其他指定计划。示例:如果计划A成功构建,它将自动触发计划B和B的构建。下进行。

  • 来自xUnit,Lint,编译器警告,机器人框架的报告:Bamboo可以运行任何可以从命令行启动的构建过程。支持包括Maven / Maven2,Ant,make,MSBuild,NAnt,Grails,devenv.exe和任何xUnix-compiant框架(JUnit,Selenium,JWebUnit,NUnit,PHPUnit等等)。