警告

您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.

ROS 建设农场

ROS 构建农场是支持 ROS 生态系统的重要基础设施,由以下机构提供和维护 开放式机器人技术.它们为 ROS 1 和 ROS 2 软件包提供源代码和二进制软件包的构建、持续集成、测试和分析。开源软件包有两个托管实例:

  1. https://build.ros.org/ 用于 ROS 1 软件包

  2. https://build.ros2.org/ 用于 ROS 2 软件包

如果您要使用所提供的任何基础设施,请考虑注册加入 建农场论坛 以便接收通知,例如有关即将发生的更改的通知。

工作与部署

ROS 构建农场可以完成几种不同的工作。每种工作类型都有详细的工作内容和工作方式说明:

  • 发布职位 生成二进制软件包,如 debian 软件包

  • 开发工作 以轮询方式在单个资源库中构建和测试 ROS 软件包

  • 拉取请求工作 由网络钩子触发,在单个资源库中构建和测试 ROS 软件包

  • 传播和信息职位 跨软件源构建和测试 ROS 软件包,并可选择使用其他 CI 作业中的工件来加快构建速度

  • 文档工作 生成软件包的 API 文档,并从清单中提取信息

  • 杂项工作 执行维护任务并生成信息数据,以可视化构建场及其生成的工件的状态

创建和部署

创建和部署软件包时,会创建和部署上述工作。 盛开一旦扩充成功,软件包就会被纳入其中一个 ROS 发行版(通过拉取请求到 rosdistro),就会产生相应的工作。工作的名称表示其类型和目的: [1]

  • 释放工作:

    • {distro}src_{platf}__{package}__{platform}__source 构建发布源软件包

    • {distro}bin_{platf}__{package}__{platform}__binary 构建二进制发布包

    例如,ROS 2 Iron(在 Ubuntu Jammy amd64 上运行)上 rclcpp 的二进制打包任务名为 Ibin_uJ64__rclcpp__ubuntu_jammy_amd64__binary.

  • 开发工作:

    • {distro}dev__{package}__{platform} 为发布分支执行 CI 构建

  • 拉取请求工作

    • {distro}pr__{package}__{platform} 执行拉取请求的 CI 构建

    例如,ROS 2 Iron(运行于 Ubuntu Jammy amd64)上 rclcpp 的 PR 作业名为 Ipr__rclcpp__ubuntu_jammy_amd64.

执行

工作的执行取决于工作的类型:

  • 开发工作 将根据配置的频率在每次提交到相应分支轮询时触发。

  • 拉取请求工作 将由上游的相应拉取请求的网络钩子触发 [2] 知识库

  • 发布职位 将在每次发布新软件包版本时触发一次,即一个新的 rosdistro 拉取请求已被接受。源任务由 rosdistro 发布文件中的版本变化触发,二进制任务由其对应的源任务触发。

常见问题 (FAQ) 和故障排除

  1. 我收到 Jenkins 发送的邮件,内容是 "建设农场工作失败"。我该怎么办?

    转到提出问题的任务。您可以在 Jenkins 电子邮件的顶部找到该链接。点击链接进入构建作业后,点击 控制台输出 然后点击 完整日志.这将提供失败构建的完整控制台输出。尽量找出最上面的错误,因为它通常是最重要的错误,其他错误可能是后续错误。

    邮件底部可能会写道 apt-src 构建 [...]' 失败了 通常 因为 一个 错误 建筑物 包装 这通常提示缺少依赖项,见 2.

  2. 我似乎缺少一个依赖项,如何找出是哪个?

    您基本上有两种选择:a. 比较简单,但可能需要多次重复;b. 比较复杂,能让您全面了解情况并进行本地调试。

    1. 检查引发问题的发布任务(参见 1.),并本地化 cmake 依赖关系问题。为此,请浏览 cmake 部分,例如,导航到 构建二进制数据库 如果是 ubuntu/debian 构建任务,则可通过左侧菜单中的"...... "部分查看。在 CMake 错误 通常会提示 cmake 配置所需但在 包清单.一旦您修复了清单中的依赖关系,就可以发布一个新的软件包,然后等待构建农场的反馈或...

    2. 要获得全面的洞察力和更快的本地调试,您可以 在本地运行发布工作.这样就可以在本地遍历清单,直到所有依赖关系都被修复。

  3. 为什么在开发工作/我的 github 操作/我的本地构建成功时,发布工作却失败了?

    这可能有几个原因。首先,发布作业会根据最小 ROS 安装进行构建,以检查所有依赖项是否已在 包清单.开发工作/github 操作/本地构建可能是在已经安装了依赖项的环境中进行的,因此不会注意到依赖问题。其次,它们可能会构建不同版本的源代码。开发工作/github 操作/本地编译通常会从源代码的 上游部门 [2] 存放处、 发布职位 构建最新发布版本的源代码,即在各自的 上游部门 的分支机构 释放 知识库 [3].

更多阅读

以下链接提供了有关建设农场的更多详细信息和见解: