ROS构建农场 [1367]
ROS构建农场是支持ROS生态系统的重要基础设施,由 Open Robotics 提供和维护。它们为ROS 1和ROS 2软件包提供源代码和二进制软件包的构建、持续集成、测试和分析。开源软件包有两个托管实例: [1368]
https://build.ros.org/ 用于ROS 1软件包 [1369]
https://build.ros2.org/ 用于ROS 2软件包 [1370]
如果您打算使用提供的基础设施,请考虑注册`构建农场讨论论坛 <http://discourse.ros.org/c/buildfarm>`__ 以便接收通知,例如有关任何即将到来的更改的通知。 [1371]
作业和部署 [1372]
ROS构建农场执行几种不同的作业。对于每种作业类型,您将找到有关它们的详细说明以及它们的工作原理: [1373]
release jobs 生成二进制软件包,例如 Debian 软件包 [1374]
devel jobs 在轮询基础上构建和测试 ROS 软件包的单个存储库 [1375]
pull_request jobs 通过 Webhooks 触发在单个存储库中构建和测试 ROS 软件包 [1376]
「
doc jobs
」_ 生成软件包的 API 文档,并从清单中提取信息 [1378]「
miscellaneous jobs
」_ 执行维护任务,并生成信息数据以可视化构建平台的状态及其生成的构件 [1379]
创建和部署 [1380]
上述工作是在软件包「开花」时创建和部署的,即发布到 ROS 1 或 ROS 2。一旦开花成功,并且软件包被纳入 ROS 发行版之一(通过对 rosdistro 提交拉取请求),相应的工作将会被创建。工作的名称编码了它们的类型和目的:1 [1381]
执行 [1391]
作业的执行取决于作业的类型: [1392]
devel jobs 将根据配置的频率,每次对相应分支进行提交时触发轮询。 [1393]
pull_request jobs 将由上游 2 仓库的相应拉取请求的 Webhook 触发 [1394]
release jobs 将在每次发布新软件包版本时触发,即每次此软件包的新 rosdistro 拉取请求被接受时。源码作业是由 rosdistro 分发文件中的版本更改触发的,而二进制作业是由其源码作业的对应部分触发的。 [1395]
常见问题解答 (FAQ) 和故障排除 [1396]
我收到来自构建工作失败的 Jenkins 邮件。我该怎么办? [1397]
转到引发问题的作业。您可以在Jenkins电子邮件的顶部找到链接。一旦您点击链接进入构建作业,点击左侧的*Console Output*,然后点击*Full Log*。这将给您提供失败构建的完整控制台输出。尝试找到最顶部的错误,因为通常它是最重要的,其他错误可能是后续错误。 [1398]
电子邮件底部可能会显示``'apt-src build [...]' failed. This is usually because of an error building the package.``这通常暗示缺少依赖项,请参阅2。 [1399]
我似乎缺少一个依赖项,我该如何找出是哪个依赖项? [1400]
基本上有两种选择,a. 更简单,但可能需要多次迭代,b. 更详细,并且可以提供完整的了解以及本地调试。 [1401]
检查引发问题的发布任务(参见 1.)并定位 cmake 依赖问题。为此,请浏览到 cmake 部分,例如,在 Ubuntu/Debian 构建任务中通过左侧菜单导航到“build binarydeb”部分。通常,CMake Error 会提示 cmake 配置所需的依赖项,在 package manifest 中缺失。修复 manifest 中的依赖项后,重新发布软件包并等待构建服务器的反馈或... [1402]
为了获得完整的了解和更快的本地调试,您可以在本地运行发布任务(run the release jobs locally)。这样可以在本地迭代 manifest,直到所有依赖项都被修复。 [1403]
为什么发布任务失败,而开发任务 / 我的 GitHub Actions / 我的本地构建成功? [1404]
这可能有几个潜在原因。首先,发布任务使用最小的 ROS 安装进行构建,以检查所有依赖项是否在 package manifest 中正确声明。开发任务 / GitHub Actions / 本地构建可能在已安装了依赖项的环境中执行,因此不会注意到依赖关系问题。其次,它们可能构建不同版本的源代码。而开发任务 / GitHub Actions / 本地构建通常构建来自 upstream 2 存储库的最新版本,release jobs 则构建最新发布的源代码,即在 release 存储库 3 的相应 upstream 分支中的源代码。 [1405]
进一步阅读 [1406]
以下链接提供更多关于构建农场的细节和见解: [1407]
https://github.com/ros-infrastructure/ros_buildfarm/blob/master/doc/index.rst - 构建农场基础设施和生成的构建作业的常规文档 [1408]
http://wiki.ros.org/regression_tests#Setting_up_Your_Computer_for_Prerelease [1409]
http://wiki.ros.org/buildfarm - ROS 1构建农场的ROS维基页面(部分*过时*) [1410]
https://github.com/ros-infrastructure/cookbook-ros-buildfarm - 安装和配置ROS构建农场机器 [1411]