发布集合

集合维护者定期发布所有支持的稳定版本的集合,前提是已合并了足够多的更改以进行发布。

准备发布集合

ansible-collections 组织 下的集合在发布时遵循 语义化版本控制。有关详细信息,请参阅 集合版本控制和弃用

要准备发布,集合必须具有

  • 公开可用的发布、版本控制和弃用策略。这可以是,例如,写在其 README 中或在专门的固定问题中。

  • 一个固定问题,其中其发布经理向社区通报计划中或已完成的发布。这可以与上面提到的发布策略问题结合在一起。

  • 一个 变更日志

  • 集合在集合存储库中标记的发布。

  • CI 管道正在运行。这可以通过使用 GitHub Actions、Azure Pipelines、Zuul 来实现。

  • 所有 CI 测试都针对发布集合的提交运行。如果它们没有通过,则 MUST NOT 发布集合。

如果您计划将新集合添加到 Ansible 包中,请参阅 将集合包含到 Ansible 中

注意

您的集合必须通过 ansible-test sanity 测试。有关详细信息,请参阅 测试集合

集合版本控制和弃用

注意

集合 MUST 遵循 语义化版本控制

为了维护用户的向后兼容性,每个 Ansible 次要版本系列(5.1.x、5.2.x 等)都将保持集合的主版本不变。例如,如果 Ansible 5.0.0 包含 community.general 4.0.2,那么每个 Ansible 5.X.x 版本都将包含在构建时可用的最新 community.general 4.y.z 版本。Ansible 5.x.x 将 **永远不会** 包含 community.general 5.y.x 版本,即使它可用。集合主版本更改将包含在下一个 Ansible 主版本中(在本例中为 6.0.0)。确保在 6.0.0 中包含的集合的当前主版本在产生新的 Ansible 6.X.X 版本时至少接收 bug 修复。

由于包括了新的次要版本,因此您可以包含新功能、模块和插件。您必须确保不破坏向后兼容性。有关详细信息,请参阅 语义化版本控制。 这尤其意味着

  • 您可以在 **补丁** 版本中修复 bug,但不能添加新功能或弃用内容。

  • 您可以在 **次要** 版本中添加新功能并弃用内容,但不能删除内容或更改现有功能的行为。

  • 您只能在 **主** 版本中删除内容或进行重大更改。

确保如果在 5.x.y 中包含的集合版本中添加了弃用,则删除本身将仅在 7.0.0 或更高版本的集合版本中发生。确保以某种方式向贡献者和用户宣布发布、版本控制和弃用策略。有关如何执行此操作的示例,请参阅 community.general 中的公告。您也可以在集合 README 文件中执行此操作。

集合变更日志

集合 MUST 包含一个变更日志。为了使集合的变更日志在外观上保持一致,并确保包含在 ansible 包中的集合存在变更日志,我们建议您使用 antsibull-changelog 来维护和生成它。

在发布之前,请验证您的变更日志是否满足以下要求

  • 自上次发布以来的所有合并的拉取请求(除了与文档和新模块/插件相关的请求)都具有 变更日志片段

  • 新的模块和插件拉取请求(除了 jinja2 测试和过滤器插件)**不需要** 变更日志片段,它们会通过其 version_added 值由变更日志生成器自动检测。

  • 所有片段都遵循 变更日志条目格式

发布集合的选项

有多种方法可以发布集合。如果您不知道使用哪种方法,请在 #ansible-community IRC 频道或 community Matrix 频道中询问。

本节假设使用 Zuul 发布集合,并且使用 antsibull-changelog 作为变更日志。

不使用发布分支进行发布

在以下情况下,可以使用不使用发布分支进行发布

  • 集合没有以前的重大版本。

  • 自集合的 1.0.0 版本发布以来没有引入任何重大更改。

有关详细信息,请参阅 不使用发布分支发布集合

当需要引入重大更改时,您可以切换到下一个方法。

混合方法

在此方法中,当前主版本的发布是从 main 分支进行的,而旧主版本的发布是从这些版本的发布分支进行的。

使用发布分支进行发布

在引入重大更改时,使用发布分支进行发布。此方法通常只由大型社区集合使用,例如 community.generalcommunity.network

有关详细信息,请参阅 使用发布分支发布集合