发布集合

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

准备发布集合

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

要准备发布,集合必须具备以下条件:

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

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

  • 一个 变更日志

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

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

  • 所有 CI 测试都针对发布集合的提交运行。如果测试不通过,则 **必须** 不发布集合。

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

注意

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

集合版本控制和弃用

注意

集合 **必须** 遵守 语义化版本控制

为了维护用户的向后兼容性,每个 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 版本期间接收错误修复。

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

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

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

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

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

集合变更日志

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

在发布之前,请验证变更日志的以下内容:

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

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

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

发布集合的选项

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

本部分假设使用 Zuul 发布集合,并使用 antsibull-changelog 来维护变更日志。

不使用发布分支进行发布

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

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

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

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

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

混合方法

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

使用发布分支进行发布

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

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