发布的开发流程
每个ROS 2版本都经历了一个长达一年以上的开发过程,该过程始于上个版本发布之前。以下是该开发过程的高级视图。此过程中没有具体的截止日期,但通常情况下,早期的任务应在后期的任务完成之前完成。
有关特定发布版本的开发过程,请参见该发布版本的文档页面。
项目 |
注释 |
---|---|
寻找ROS Boss |
“ROS Boss”是负责引导一个发行版在其生命周期的开发、发布、更新和终止支持阶段的人员。他们是从Open Robotics的内部ROS 2团队中选出的。 |
运行进程以选择发行版名称 |
ROS Boss负责选择发行版名称的过程,使用了来自社区和潜在命名冲突的输入等来源。 |
创建发行版的文档页面 |
每个发行版都有一个文档页面,列出了其重要统计数据,例如计划发布日期、终止支持日期以及与上一个版本相比的重大更改。 |
设置发布时间表 |
在发布日(通常是世界龟日)前的最后几周非常紧张,充满了各种截止日期,例如何时冻结默认的RMW实现。这些截止日期必须提前进行合理的规划。 |
制定路线图 |
虽然每个ROS贡献者都有自己针对每个发行版的计划功能,但我们试图维护一个总体的路线图,预计在发行版中会出现哪些新功能和重大更改。ROS Boss和Open Robotics的ROS 2开发团队负责人与ROS 2 TSC和其他相关方共同努力,制定出一个在可用时间内可实现并满足ROS社区需求的路线图。 |
公布路线图 |
计划特性和重大变更的列表将通过一个GitHub问题公开,该问题将跟踪开发路线图中每个项目的进展。当然,这并不意味着路线图在此时已经确定,因为开发计划可能会发生变化,我们总是(并经常会)欢迎新的贡献,即使它们不在计划的路线图上。 |
设置目标平台和主要依赖项 |
目标平台(操作系统、发行版和版本)必须提前确定,以便基础设施的开发工作(例如构建农场的支持)能够进行。同样,每个主要依赖项的版本(Python版本、编译器、Eigen的版本等)也必须确定。这是通过更新 REP-2000 来完成的。 |
在构建农场中添加平台支持 |
构建农场是支持ROS 2发行版的关键基础设施部分。它提供持续集成功能,帮助我们保持质量,并构建二进制软件包,社区依赖这些软件包以避免从源代码构建ROS 2和软件包。如果目标平台与之前的ROS 2发行版不同,则必须在构建农场中添加必要的支持。 |
委托徽标和相关艺术品 |
每个ROS 2发行版(以及ROS发行版)中备受喜爱的部分是徽标。徽标是根据选择的发行版名称委托专业艺术家设计的。基于徽标,还会制作其他艺术品,如turtlesim图标。 |
为该发行版创建邮件列表 |
为了发布重要公告,必须建立一个邮件列表,以便联系那些对该发行版感兴趣的人,例如他们的软件包在构建环境中无法生成二进制文件。 |
创建测试用例 |
随着开发过程进入最后几个月,测试工作开始认真进行。必须制作并提供将在开发的最后阶段使用的集成测试用例,这些用例将由负责执行的发布团队使用。 |
宣布即将到来的RMW冻结 |
RMW冻结是指新发行版的默认RMW实现达到特性冻结点。这为开发人员提供了一个稳定的目标,用于测试他们的软件包。这对于客户端库开发人员尤为重要,他们需要知道RMW层的哪些特性可以供客户端库使用。 |
升级依赖软件包 |
ROS依赖的软件包,但不属于ROS软件,并且在平台软件包管理器(例如Ubuntu的aptitude)中不可用的所谓“供应商软件包”,必须更新到REP-2000中指定的版本(或适当的版本,对于未在REP-2000中列出的软件包)。这在Windows上尤为重要。 |
创建详细的发布计划 |
进行开发过程的最后两个月的计划。这会产生一个详细的测试计划,指定某些软件包必须可用的时间表等等。它可以找到发布过程中各个步骤之间的依赖关系,并找到执行每个步骤的人员。 |
冻结RMW |
RMW实现现在已经冻结。理论上,现在可以通过详尽的测试来确保它在发布日正常工作。 |
宣布即将进行整体冻结 |
在RMW实现冻结后,下一个冻结是将整个分发系统冻结。这是核心ROS软件包成为特性冻结状态的时刻,使得非核心软件包的开发者能够针对稳定的目标进行测试,同时也给分发测试人员提供了一个不会在他们测试之后立即更改的内容进行测试。 |
冻结分发系统 |
从这一点开始,不能向任何核心ROS软件包添加新功能。只能将在开发的密集集成测试阶段发现的(不可避免的)错误进行修复并纳入代码库。这意味着Rolling Ridley实际上是被临时冻结了。 |
宣布即将创建分支 |
新的ROS 2发行版从Rolling Ridley分支出来是一个重要的时刻。值得进行准备。 |
宣布即将到来的测试版 |
当发行版进入测试版阶段时,ROS社区可以进行更广泛的测试。这个测试版紧随发行版从Rolling Ridley分支出来之后。 |
从Rolling Ridley分支出来 |
通过从Rolling Ridley分支出来创建新的ROS 2发行版。实际上,新的发行版就在这一时刻诞生。与此同时,Rolling Ridley脱离了开发过程,可以继续向未来发展,再次接收新功能。 |
将发行版添加到CI |
持续集成系统已更新,允许使用新发行版的分支和核心ROS软件包进行构建。这意味着软件包开发者可以针对新发行版而不是Rolling Ridley运行CI(持续集成)来测试其软件包。 |
开始构建临时测试tarballs(压缩包)。 |
为将新发行版进行全面测试的精英测试团队提供一些测试内容,而无需不断从源代码编译ROS 2。使用构建工厂生成一系列tarballs,其中包含特定时间点的发行版供测试人员测试。 |
添加发行版文档。 |
在ROS 2文档站点上添加有关该发行版的详细文档,例如与上一个发行版相比的重大变化。 |
公布测试版。 |
发布beta版本的分发,并邀请ROS社区整体参与测试(对于那些还没有参与的人来说)。此时,测试者越多越好,因为在发布之前,需要将分发物放入尽可能多的场景中进行测试,以发现错误。 |
最终发布准备 |
随着新的分发物进入绝对完全冻结阶段,为发布做最后的准备。这些包括使用构建工厂生成二进制包,以便有东西可以发布。 |
发布 |
重要的日子,如果一切顺利,与5月23日的世界海龟日相吻合。分发物的二进制包在发布存储库中提供,并发布公告。举办派对,ROS 2开发团队休息放假,值得拥有。 |