首次发布

本指南解释了如何发布尚未发布的ROS 2软件包。由于在发布ROS软件包时有许多选项可用,本指南旨在涵盖最常见的情况,不涵盖每个特例。

成为发布团队的一员

您必须是一个:ref:`发布团队 <what-is-a-release-team>`的成员。如果您还不是发布团队的一员,请按照以下方式之一进行操作:

创建一个新的发布仓库

你需要一个:ref:`发布仓库 <what-is-a-release-repository>`来发布一个软件包。请按照:ref:`创建一个新的发布仓库 <create-a-new-release-repository>`进行操作。

安装依赖项

根据你的平台安装你将在接下来的步骤中使用的工具:

sudo apt install python3-bloom python3-catkin-pkg

设置个人访问令牌

警告

如果您的计算机上存在文件 ~/.config/bloom,那么您很可能之前已经进行过这个操作,所以您应该跳过此部分。

在发布过程中,将执行多个需要密码验证的 HTTPS Git 操作。为了避免反复询问密码,将设置一个 个人访问令牌 (PAT)。如果您的 GitHub 帐户已设置了多因素身份验证,必须 设置一个个人访问令牌。

按照以下步骤创建个人访问令牌:

  1. 登录 GitHub 并转到 个人访问令牌

  2. 点击 生成新令牌 按钮。

  3. Note 设置为类似于 Bloom token 的内容。

  4. Expiration 设置为 无过期时间

  5. 选中 public_repoworkflow 复选框。

  6. 点击 生成令牌 按钮。

创建令牌后,您将返回到*个人访问令牌*页面。复制突出显示的绿色字母数字令牌

将您的GitHub用户名和PAT保存到名为``~/.config/bloom``的新文件中,格式如下:

{
   "github_user": "<your-github-username>",
   "oauth_token": "<token-you-created-for-bloom>"
}

确保存储库是最新的。

请确保:

  • 您的代码仓库已托管在诸如GitHub之类的远程服务器上。

  • 您在计算机上克隆了该代码仓库,并且处于正确的分支上。

  • 远程代码仓库和您的克隆版本都是最新的。

生成变更日志

使用以下命令为您的仓库中的每个软件包生成一个 CHANGELOG.rst 文件:

catkin_generate_changelog --all

在编辑器中打开所有的 CHANGELOG.rst 文件。您会看到 catkin_generate_changelog 自动生成了一个即将发布的部分,其中包含了提交信息的注释:

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Changelog for package your_package
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Forthcoming
-----------
* you can modify this commit message
* and this

整理提交信息列表,以简明扼要地传达自上次发布以来软件包所做的重要更改,并**提交所有的 CHANGELOG.rst 文件。**不要修改 Forthcoming 标题。

提升软件包版本

每个软件包的发布版本必须具有比上一个发布版本更高的唯一版本号。运行:

catkin_prepare_release

执行以下操作:

  1. 在``package.xml``中增加软件包版本

  2. 在``CHANGELOG.rst``文件中用``版本(日期)``(例如``0.0.1(2022-01-08)``)替换``即将发布``标题

  3. 提交这些更改

  4. 创建一个标签(例如``0.0.1``)

  5. 将更改和标签推送到您的远程存储库

注解

默认情况下,软件包的补丁版本会递增,例如从``0.0.0``增加到``0.0.1``。若要递增次要版本或主要版本,请运行``catkin_prepare_release --bump minor``或``catkin_prepare_release --bump major``命令。有关详细信息,请参阅``catkin_prepare_release --help``。

Bloom发布

运行以下命令,将``my_repo``替换为您的仓库名称:

bloom-release --new-track --rosdistro humble --track humble my_repo

小技巧

  • ``--new-track``指示bloom创建一个新的:ref:`轨道 <what-is-a-track>`并进行配置。

  • --rosdistro humble 表示这个版本适用于 humble 发行版

  • --track humble 表示你想要将轨道名称设为 humble

将提示你输入信息以配置一个新的轨道。在常见的场景中,比如:

  • 你的软件包存储在一个名为 my_repo 的仓库中

  • 你正在发布一个名为 main 的分支

  • 该代码库托管在 GitHub 上,地址为 https://github.com/my_organization/my_repo.git

  • 你的发布代码库位于 https://github.com/ros2-gbp/my_repo-release.git

你应按照以下提示进行回答:

配置

发布仓库网址

https://github.com/ros2-gbp/my_repo-release.git

存储库名称

my_repo

上游存储库URI

https://github.com/my_organization/my_repo.git

上游版本控制系统类型

版本

发布标签

上游开发分支

main

ROS发行版

补丁目录

发布仓库推送URL

注解

表格中的空单元格表示应使用默认值。只需按Enter键回答提示即可。

Bloom将自动为您创建针对`rosdistro <https://github.com/ros/rosdistro>`_的拉取请求。

下一步

一旦您的拉取请求被提交,通常在一两天内,rosdistro的维护人员将会审查并合并您的拉取请求。如果您的软件包构建成功,在24-48小时内,您的软件包将会在**ros-testing**存储库中可用,您可以在那里:doc:测试预发布的二进制文件

大约每两到四周,发行版的发布经理会手动将ros-testing的内容与主要ROS仓库同步。这时候你的软件包才会真正对整个ROS社区可用。要获取下一次同步的更新信息,请订阅ROS Discourse上的“打包和发布管理”分类:<https://discourse.ros.org/c/release/16>。