ROS Build Farms [待校准@186]

ROS建设农场是支持ROS生态系统的重要基础设施,由 Open Robotics 提供和维护。他们为ROS 1和ROS 2包提供源文件和二进制包的构建、持续集成、测试和分析。开放源文件包有两个托管实例: [待校准@187]

  1. https://build.ros.org/用于ROS 1包 [待校准@188]

  2. https:// build.ros2.org/ for ROS 2包 [待校准@189]

如果您打算使用任何提供的基础设施,请考虑注册 build farm discussion forum ,以便接收通知,例如,关于任何即将到来的变更。 [待校准@190]

作业和部署 [待校准@191]

ROS构建农场执行几个不同的工作。对于每种工作类型,你会发现他们做什么和如何工作的详细描述: [待校准@192]

创建和部署 [待校准@198]

当包被打开时,上述作业被创建和部署,即为ROS 1或ROS 2发布。一旦开花成功,并且一个包被合并到一个ROS发行版中 (通过对rosdiso _ 的拉取请求),相应的作业将被生成。作业的名称对其类型和目的进行编码: 1 [待校准@199]

  • 发布作业: [待校准@200]

    • [需手动修复的语法]``{distro}src_{platf}__{package}__{platform}__source`` build源文件包的发行版本 [待校准@201]

    • [需手动修复的语法]``{distro}bin_{platf}__{package}__{platform}__binary`` build二进制包的发行版本 [待校准@202]

    例如,rclcpp在ROS 2Galactic (在UbuntuFocal amd64上运行) 上的二进制打包作业被命名为 Gbin_uF64__rclcpp__ubuntu_focal_amd64__binary[待校准@203]

  • 开发工作: [待校准@204]

    • 为释放分支构建``{distro}dev__{package}__{platform}`` performCI [待校准@205]

    • [需手动修复的语法]``{distro}pr__{package}__{platform}`` perform为拉取请求构建CI [待校准@206]

    例如,rclcpp在ROS 2Galactic上的PR作业 (在UbuntuFocal amd64上运行) 被命名为 Gpr__rclcpp__ubuntu_focal_amd64[待校准@207]

执行 [待校准@208]

作业的执行取决于作业的类型: [待校准@209]

  • 每次对各自分支或上游 2 仓库的各自拉取请求进行提交时,都会触发 devel jobs [待校准@210]

  • [需手动修复的语法] release jobs 将触发一次每次新包版本发布,即这个包接受了一个新的rosdiso _ pull请求。源文件作业由rosdistribution文件中的版本更改触发,二进制作业由其对应的源文件触发。 [待校准@211]

问题频率 (FAQ) 和故障排除 [待校准@212]

  1. I get Jenkins mails from failing build farm jobs. What do I do?

    转到提出问题的工作。您可以在Jenkins电子邮件的顶部找到链接。点击构建作业的链接后,单击左侧的 * 控制台输出 *,然后单击 * 完整日志 *。这将为您提供失败构建的完整控制台输出。试着找到最重要的错误,因为它通常是最重要的,其他错误可能是后续的。 [待校准@214]

    电子邮件底部可能显示 “apt-src build [...]” 失败。这通常是因为构建包时出错。”这通常提示缺少依赖项,请参见2。 [待校准@215]

  2. ** 我似乎缺少依赖项,如何找出哪一个?** [待校准@216]

    你基本上调用y有两个选项,a.更容易,但可能需要几次迭代,b.更复杂,给你充分的洞察力和本地调试。 [待校准@217]

    1. 检查引发问题的发布作业 (请参阅1.) 并本地化cmake依赖项问题。为此,请浏览到cmake部分,例如,如果是ubuntu/debian构建作业,请通过左侧菜单导航到 * build binarydeb * 部分。* CMake错误 * 将在cmake配置所需的依赖项上典型调用y提示,但在 package manifest 中丢失。修复清单中的依赖关系后,发布包,等待构建场或... 的反馈。 [待校准@218]

    2. 为了获得全面的洞察力和更快的本地调试,您可以 run the release jobs locally 。这允许迭代清单lo调用y,直到所有依赖项都修复。 [待校准@219]

  3. Why为什么当开发作业/我的github动作/我的本地构建成功时,发布作业会失败?Why [待校准@220]

    这有几个潜在的原因。首先,针对最小ROS安装构建的发布作业,以检查是否在 package manifest. Devel jobs / github actions / local builds may be performed in an environment that has the dependencies already installed, therefore does not notice dependency issues. Second, they might build different versions of the source code. While devel jobs / github actions / local builds usually build the latest version from the upstream 2 repository, release jobs 构建最新版本的源文件 (即* release * 仓库 3 的 * 上游 * 分支中的源文件代码。 [待校准@221]

延申阅读 [Alyssa@222]

以下链接提供了有关构建场的更多详细信息和见解: [待校准@223]

1

[需手动修复的语法]``{distro}`` is the first letter of the ROS distribution, {platform} ({platf}) names the platform the package is built for (and its short code), and {package} is正在建造的ROS包的名称。 [待校准@228]

2(1,2)

The upstream repository is the repository containing the original source code of the respective ROS 1 / ROS 2 package.

3

The release repository is the repository that ROS 2 infrastructure uses for releasing packages, see https://github.com/ros2-gbp/.