【问题标题】:Build (CI) server for embedded softtware为嵌入式软件构建 (CI) 服务器
【发布时间】:2012-11-28 00:28:33
【问题描述】:

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

我们主要为没有操作系统的微控制器开发。

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

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

此时我需要构建服务器:

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

  • 基于 ldap 组的权限

  • 每个组/项目的权限

我愿意接受任何建议,包括开源和商业。 我在看 Bamboo 的视频看起来很不错,但我还没有尝试过。

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

团队城市

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

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

TeamCity 支持项目中的多种配置,以解决作业分组问题。我没有找到对项目进行分组的选项。

【问题讨论】:

    标签: build embedded continuous-integration build-automation


    【解决方案1】:

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

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

    所有这些都是高度可配置和可定制的。我们已经能够使用 TeamCity 完成许多多样化、复杂的事情,而且它对我们来说是完全可靠和稳定的。它看起来也不错——服务器仪表板以一种易于理解的方式排列信息。

    【讨论】:

    • 我会尝试使用 TeamCity。从你的描述看起来很有趣。通过“分层项目”,我更多地考虑将工作分组,我没有在“起始页”上找到所有工作。但它基于 Jenkins 的经验,正如我在 TeamCity 中看到的,制作管道是不同的理念。我需要尝试。当我有使用 TeamCity 的经验时,我会更新我的问题。
    【解决方案2】:

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

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

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

    回答你的其他观点:

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

    • 分层项目(项目/配置组):Bamboo 确实支持父子计划结构。您可以通过多种方式为构建设置触发。其中之一是将触发器基于其他构建,即,计划构建由之前成功构建其他计划或其他指定计划成功构建时触发。示例:如果 A 计划构建成功,它将自动触发 B 和 C 计划的构建。

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

    【讨论】:

    • 感谢您提供信息。计划(顺序阶段、并行作业)看起来比 jenkins 中的链接作业​​或 Teamcity 中的配置更好。我想我最终必须安装竹子试用版并使用它。我有一个关于竹子试用的问题,我可以使用试用许可证运行多少个代理?
    • 乐于助人。您可以使用试用许可证运行 25 个代理。应该足以让你继续前进。
    猜你喜欢
    • 2012-01-03
    • 2016-06-09
    • 2011-01-14
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 2011-03-02
    • 2017-03-25
    • 2011-02-13
    相关资源
    最近更新 更多