使用发布分支发布集合

集合必须遵循语义版本控制规则。有关高级详细信息,请参阅发布集合

发布计划和公告

  1. 在集合的相应固定发布问题/社区公告板以及#ansible-community 矩阵/IRC 频道中宣布您发布集合的意图。如果存在任何其他专用频道,请在其中重复公告。

  2. 确保所有其他存储库维护者都了解后续发布的时间。

发布主要集合版本

新版本假定为X.0.0

  1. 确保galaxy.yml包含正确的版本号X.0.0。如果不是这种情况,请创建一个 PR 来更新它。这将使所有必须在X.0.0中删除的弃用项的健全性测试失败,因此这可能是大量工作,应该在主要版本发布前几周完成。

  2. 检查集合中计划在主要版本中删除但健全性测试未报告的弃用项。使用过去的变更日志或在存储库中运行grep -r `X.0.0` plugins/

  3. 如果您要发布community.generalcommunity.network集合,请在相应的存储库中创建一个新的backport-X标签。从相应的现有标签复制样式和描述。

  4. 确保您位于本地分支的默认分支中。这些示例使用main

git status
git checkout main     # if needed
  1. 更新您的本地分支

git pull --rebase upstream main

创建发布分支

  1. 创建一个分支stable-X。将X替换为正确的数字并将其推送到**上游**存储库,而不是origin

git branch stable-X main
git push upstream stable-X
  1. main分支创建并检出到另一个分支

git checkout -b update_repo
  1. 将分支中galaxy.yml中的版本更新为下一个**预期**版本,例如X.1.0

创建变更日志

  1. changelogs/changelog.yml替换为

ancestor: X.0.0
releases: {}
  1. changelogs/fragments/中删除所有变更日志片段。删除变更日志片段可确保每个主要版本都包含一个描述自上次主要版本以来的更改的变更日志。

  2. 添加并提交所有更改。将分支推送到origin存储库。

  3. 在集合存储库中创建一个拉取请求。如果 CI 测试通过,则合并拉取请求,因为main分支正在预期下一个次要/主要版本的更改

  4. 切换到stable-X分支。

  5. stable-X分支中,验证galaxy.yml是否包含正确的版本号X.0.0

  6. stable-X分支中,确保changelogs/changelog.yml包含正确的祖先版本

ancestor: X-1.0.0
releases: {}
  1. stable-X分支中,添加一个变更日志片段changelogs/fragments/X.0.0.yml,其内容为

release_summary: |-
  Write some text here that should appear as the release summary for this version.
  The format is reStructuredText, but not a list as for regular changelog fragments.
  This text will be inserted into the changelog.

例如

release_summary: This is release 2.0.0 of ``community.foo``, released on YYYY-MM-DD.
  1. stable-X分支中,生成变更日志

antsibull-changelog release --cummulative-release
  1. stable-X分支中,验证CHANGELOG.rst是否符合预期。

  2. stable-X分支中,更新README.md,以便变更日志链接指向/tree/stable-X/,不再指向/tree/main/,并相应地更改徽章,例如,在 AZP 的情况下,将?branchName=stable-X添加到 AZP CI 徽章(https://dev.azure.com/ansible/community.xxx/_apis/build/status/CI?branchName=stable-X)。

  3. stable-X分支中,添加、提交并将更改推送到README.mdCHANGELOG.rstchangelogs/changelog.yaml,以及可能已删除/归档的片段到**上游**存储库,而不是origin

发布集合

  1. stable-X分支中,为最后一个提交添加一个带注释的标签,其集合版本为X.0.0。将此标签推送到upstream存储库将使 Zuul 在Ansible Galaxy上发布集合。

git tag -n    # see current tags and their comments
git tag -a NEW_VERSION -m "comment here"    # the comment can be, for example, "community.foo: 2.0.0"
git push upstream NEW_VERSION
  1. 如果集合使用Zuul发布其版本,请等待新版本在集合的Ansible Galaxy页面上发布。它将显示在可供下载的 tarball 列表中。

  2. 如果在推送标签后几个小时内未出现发布 tarball,请尝试重新标记发布提交并再次推送标签。在stable-X分支中位于发布提交处

git tag --delete NEW_VERSION
git push upstream :NEW_VERSION
git tag -a NEW_VERSION -m "comment here"    # the comment can be, for example, "community.foo: 2.0.0"
git push upstream NEW_VERSION
  1. 为新标签添加一个 GitHub 版本。标题应为版本和内容,例如 - See https://github.com/ansible-collections/community.xxx/blob/stable-X/CHANGELOG.rst for all changes

  2. 通过Bullhorn 时事通讯宣布发布。

  3. 在集合的固定发布问题/社区公告板以及#ansible-community 矩阵/Libera.Chat IRC 频道中宣布发布。

  4. stable-X分支中,将galaxy.yml中的版本更新为下一个**预期**版本,例如X.1.0。添加、提交并推送到**上游**存储库。

发布次要集合版本

新版本假定为X.Y.0。所有应包含在其中的更改都应先前从默认分支反向移植到stable-X分支。

创建变更日志

  1. stable-X分支中,确保galaxy.yml包含正确的版本号X.Y.0。如果不是,请更新它。

  2. stable-X分支中,添加一个变更日志片段changelogs/fragments/X.Y.0.yml,其内容为

release_summary: |-
  Write some text here that should appear as the release summary for this version.
  The format is reStructuredText, but not a list as for regular changelog fragments.
  This text will be inserted into the changelog.
  1. stable-X分支中,运行

antsibull-changelog release
  1. stable-X分支中,验证CHANGELOG.rst是否符合预期。

  2. stable-X分支中,添加、提交并将更改推送到CHANGELOG.rstchangelogs/changelog.yaml,以及可能已删除/归档的片段到**上游**存储库,而不是到origin。

发布集合

  1. stable-X分支中,为最后一个提交添加一个带注释的标签,标签为集合版本X.Y.0。将此标签推送到upstream存储库将使Zuul在Ansible Galaxy上发布该集合。

git tag -n    # see current tags and their comments
git tag -a NEW_VERSION -m "comment here"    # the comment can be, for example, "community.foo: 2.1.0"
git push upstream NEW_VERSION
  1. 等待新版本在集合的Ansible Galaxy页面上发布。发布的版本将显示在一个可供下载的tarball列表中。

  2. 为新标签添加一个 GitHub 版本。标题应为版本和内容,例如 - See https://github.com/ansible-collections/community.xxx/blob/stable-X/CHANGELOG.rst for all changes

  3. 通过Bullhorn 时事通讯宣布发布。

  4. 在集合的固定发布问题/社区公告板和#ansible-community Matrix/IRC 频道中宣布发布。此外,您还可以使用GitHub的发布系统来宣布它。

  5. stable-X分支中,将galaxy.yml中的版本更新为下一个**预期**版本,例如,如果您已发布X.1.0,则下一个预期版本可能是X.2.0。添加到**上游**存储库并提交和推送。

  6. 检出到main分支。

  7. main分支中

  1. 如果在下一个主版本发布之前发布了更多次要版本,请将galaxy.yml中的版本更新为X.(Y+1).0。创建一个专门的拉取请求并合并。

  2. 如果下一个版本将是新的主版本,请创建一个拉取请求,在其中您将galaxy.yml中的版本更新为(X+1).0.0。请注意,健全性测试很可能会失败,因为将会有弃用,并计划在(X+1).0.0中删除,这些弃用由测试标记。

对于每个此类弃用,请确定

  • 是否立即删除它们。例如,删除完整的modules/plugins或删除重定向。

  • 是否向相应的tests/sanity/ignore-*.txt文件添加忽略条目并创建问题,例如,对于modules/plugins中删除的功能。

一旦CI测试通过,合并拉取请求。确保此拉取请求的合并时间不要比version_added健全性测试预期的新功能拉取请求的错误版本晚太多。

注意

在发布前几天就进行一些删除操作是有意义的。这些删除必须发生在主分支中,并且不能回退。

发布补丁版本

假设新版本为X.Y.Z,前一个补丁版本假设为X.Y.z,其中z < Zz通常为0,因为补丁版本并不常见。

发布时预计会有更多次要版本

  1. 检出X.Y.z标签。

  2. 更新galaxy.yml,使版本为X.Y.Z。添加并提交。

  3. stable-X中挑选所有在X.Y.z之后添加的并且应该进入X.Y.Z的更改。

  4. 添加一个变更日志片段changelogs/fragments/X.Y.Z.yml,其内容为

release_summary: |-
  Write some text here that should appear as the release summary for this version.
  The format is reStructuredText but not a list as for regular changelog fragments.
  This text will be inserted into the changelog.

添加到Git并提交。

  1. 生成变更日志。

antsibull-changelog release
  1. 验证CHANGELOG.rst是否符合预期。

  2. 添加并提交对CHANGELOG.rstchangelogs/changelog.yaml的更改,以及可能已删除/归档的片段。

发布集合

  1. 为最后一个提交添加一个带注释的标签,标签为集合版本X.Y.Z。将此标签推送到upstream存储库将使Zuul在Ansible Galaxy上发布该集合。

git tag -n    # see current tags and their comments
git tag -a NEW_VERSION -m "comment here"    # the comment can be, for example, "community.foo: 2.1.1"
git push upstream NEW_VERSION
  1. 等待新版本在集合的Ansible Galaxy页面上发布。它将显示在一个可供下载的tarball列表中。

  2. 为新标签添加一个 GitHub 版本。标题应为版本和内容,例如 - See https://github.com/ansible-collections/community.xxx/blob/stable-X/CHANGELOG.rst for all changes

注意

此版本的數據僅包含在標籤中,而不是分支中,特別是stable-X中。这是故意的,因为下一个次要版本X.(Y+1).0也包含X.Y.Z的更改,因为这些更改是从stable-X中挑选的。

  1. 通过Bullhorn 时事通讯宣布发布。

  2. 在集合的固定发布问题/社区公告板和#ansible-community Matrix/IRC 频道 <https://docs.ansible.org.cn/ansible/devel/community/communication.html#real-time-chat>中宣布发布。

发布时预计不会有更多次要版本

  1. stable-X分支中,确保galaxy.yml包含正确的版本号X.Y.Z。如果不是,请更新它!

  2. stable-X分支中,添加一个变更日志片段changelogs/fragments/X.Y.Z.yml,其内容为

release_summary: |-
  Write some text here that should appear as the release summary for this version.
  The format is reStructuredText, but not a list as for regular changelog fragments.
  This text will be inserted into the changelog.
  1. stable-X分支中生成变更日志。

antsibull-changelog release
  1. stable-X分支中,验证CHANGELOG.rst是否符合预期。

  2. stable-X分支中,添加、提交并将更改推送到CHANGELOG.rstchangelogs/changelog.yaml,以及可能已删除/归档的片段到**上游**存储库,而不是到origin。

发布集合

  1. stable-X分支中,为最后一个提交添加一个带注释的标签,标签为集合版本X.Y.Z。将此标签推送到upstream存储库将使Zuul在Ansible Galaxy上发布该集合。

git tag -n    # see current tags and their comments
git tag -a NEW_VERSION -m "comment here"    # the comment can be, for example, "community.foo: 2.1.1"
git push upstream NEW_VERSION
  1. 等待新版本在集合的Ansible Galaxy页面上发布。它将显示在一个可供下载的tarball列表中。

  2. 为新标签添加GitHub发布。标题应为版本和内容,例如:See https://github.com/ansible-collections/community.xxx/blob/stable-X/CHANGELOG.rst for all changes

  3. 通过Bullhorn 时事通讯宣布发布。

  4. 在集合的固定问题/社区公告板和#ansible-community Matrix/IRC 频道中宣布发布。