使用发布分支发布集合
集合必须遵循语义版本控制规则。有关高级细节,请参见发布集合。
发布计划和公告
- 在集合的相应固定发布问题/社区公告板和 - #ansible-communityMatrix/IRC频道中宣布您发布集合的意图。如果存在其他专用频道,请在这些频道中重复公告。
- 确保所有其他存储库维护者都了解后续发布的时间。 
发布主要集合版本
新版本假定为X.0.0。
- 确保 - galaxy.yml包含正确的版本号- X.0.0。如果不是这种情况,请创建一个PR来更新它。这将导致所有必须在- X.0.0中删除的弃用项的完整性测试失败,因此这可能是大量工作,应该在主要发布之前的几周完成。
- 检查集合中计划在主要版本中删除但完整性测试未报告的弃用项。使用过去的变更日志或在存储库中运行 - grep -r `X.0.0` plugins/。
- 如果您要发布 - community.general和- community.network集合,请在相应的存储库中创建一个新的- backport-X标签。从相应的现有标签复制样式和描述。
- 确保您在本地分支的默认分支中。这些示例使用 - main。
git status git checkout main # if needed
- 更新您的本地分支 
git pull --rebase upstream main
创建发布分支
- 创建一个分支 - stable-X。将- X替换为正确的数字,并将其推送到**上游**存储库,而不是- origin。
git branch stable-X main git push upstream stable-X
- 从 - main分支创建并检出另一个分支
git checkout -b update_repo
- 将分支中 - galaxy.yml中的版本更新到下一个**预期**版本,例如- X.1.0。
创建变更日志
- 将 - changelogs/changelog.yml替换为
ancestor: X.0.0 releases: {}
- 从 - changelogs/fragments/中删除所有变更日志片段。删除变更日志片段可确保每个主要版本都有一个变更日志来描述自上次主要版本以来的更改。
- 添加并提交所有已做的更改。将分支推送到 - origin存储库。
- 在集合存储库中创建一个pull request。如果CI测试通过,则合并pull request,因为 - main分支正在预期下一个次要/主要版本的更改
- 切换到 - stable-X分支。
- 在 - stable-X分支中,验证- galaxy.yml是否包含正确的版本号- X.0.0。
- 在 - stable-X分支中,确保- changelogs/changelog.yml包含正确的祖先版本
ancestor: X-1.0.0 releases: {}
- 在 - 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.
- 在 - stable-X分支中,生成变更日志
antsibull-changelog release --cummulative-release
- 在 - stable-X分支中,验证- CHANGELOG.rst是否符合预期。
- 在 - stable-X分支中,更新- README.md,以便变更日志链接指向- /tree/stable-X/,不再指向- /tree/main/,并相应地更改徽章,例如,对于AZP,向AZP CI徽章添加- ?branchName=stable-X(https://dev.azure.com/ansible/community.xxx/_apis/build/status/CI?branchName=stable-X)。
- 在 - stable-X分支中,添加、提交并将更改推送到- README.md、- CHANGELOG.rst和- changelogs/changelog.yaml,以及可能已删除/存档的片段到**上游**存储库,而不是- origin。
发布集合
- 在 - 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
- 如果集合使用Zuul发布其版本,请等待新版本发布到集合的Ansible Galaxy页面。它将出现在可下载的tarball列表中。 
- 如果在推送标签后几小时内未出现发布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
- 为新标签添加一个GitHub发布。标题应为版本和内容,例如 - - See https://github.com/ansible-collections/community.xxx/blob/stable-X/CHANGELOG.rst for all changes。
- 通过Bullhorn通讯宣布发布。 
- 在集合的固定发布问题/社区公告板和 - #ansible-communityMatrix/Libera.Chat IRC频道中宣布发布。
- 在 - stable-X分支中,将- galaxy.yml中的版本更新到下一个**预期**版本,例如- X.1.0。添加、提交并推送到**上游**存储库。
发布次要集合版本
假设新版本为X.Y.0。所有应该包含在新版本中的更改都应该预先从默认分支反向移植到stable-X分支。
创建变更日志
- 在 - stable-X分支中,确保- galaxy.yml包含正确的版本号- X.Y.0。如果不是,请更新它。
- 在 - 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.
- 在 - stable-X分支中,运行
antsibull-changelog release
- 在 - stable-X分支中,验证- CHANGELOG.rst是否符合预期。
- 在 - stable-X分支中,添加、提交并将更改推送到- CHANGELOG.rst和- changelogs/changelog.yaml,以及可能已删除/存档的片段到**上游**仓库,而不是到origin仓库。
发布集合
- 在 - 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
- 等待新版本在集合的Ansible Galaxy页面上发布。发布的版本将显示在一个可下载的tarball列表中。 
- 为新标签添加一个GitHub发布。标题应为版本和内容,例如 - - See https://github.com/ansible-collections/community.xxx/blob/stable-X/CHANGELOG.rst for all changes。
- 通过Bullhorn通讯宣布发布。 
- 在集合的固定发布问题/社区公告板以及 - #ansible-communityMatrix/IRC频道中宣布发布。此外,您可以使用GitHub的Releases系统来宣布它。
- 在 - stable-X分支中,将- galaxy.yml中的版本更新为下一个**预期**版本,例如,如果您已发布- X.1.0,则下一个预期版本可能是- X.2.0。添加到**上游**仓库并提交和推送。
- 检出到 - main分支。
- 在 - main分支中
如果在下一个主要版本发布之前发布了更多次要版本,请将
galaxy.yml中的版本也更新为X.(Y+1).0。创建一个专门的pull request并合并。
如果下一个版本将是新的主要版本,请创建一个pull request,在其中将
galaxy.yml中的版本更新为(X+1).0.0。请注意,由于将在(X+1).0.0中删除弃用功能,因此健全性测试很可能会失败,测试会标记这些弃用功能。对于每一个这样的弃用,请决定
是否立即删除它们。例如,您可以删除完整的
modules/plugins或删除重定向。
是否向相应的
tests/sanity/ignore-*.txt文件添加忽略条目并创建问题,例如,针对modules/plugins中删除的功能。一旦CI测试通过,请合并pull request。确保此pull request的合并时间不要晚于
version_added健全性测试预期新功能pull request的错误版本的时间。
注意
在发布前的几天内进行一些删除操作是有意义的。这些删除必须发生在主分支中,并且不能反向移植。
发布补丁版本
假设新版本为X.Y.Z,之前的补丁版本为X.Y.z,其中z < Z。z通常为0,因为补丁版本并不常见。
预期更多次要版本时发布
- 检出 - X.Y.z标签。
- 更新 - galaxy.yml,使其版本为- X.Y.Z。添加并提交。
- 从 - stable-X中挑选自- X.Y.z之后添加的所有更改,这些更改应该包含在- X.Y.Z中。
- 添加一个变更日志片段 - 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并提交。
- 生成变更日志。 
antsibull-changelog release
- 验证 - CHANGELOG.rst是否符合预期。
- 添加并提交对 - CHANGELOG.rst和- changelogs/changelog.yaml以及可能已删除/存档的片段的更改。
发布集合
- 为最后一次提交添加一个带注释的标签,其集合版本为 - 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
- 等待新版本在集合的Ansible Galaxy页面上发布。它将显示在一个可下载的tarball列表中。 
- 为新标签添加一个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挑选出来的。
- 通过Bullhorn通讯宣布发布。 
- 在集合的固定发布问题/社区公告板以及 - #ansible-communityMatrix/IRC频道 <https://docs.ansible.org.cn/ansible/devel/community/communication.html#real-time-chat>中宣布发布。
预期不再有次要版本时发布
- 在 - stable-X分支中,确保- galaxy.yml包含正确的版本号- X.Y.Z。如果不是,请更新它!
- 在 - 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.
- 在 - stable-X分支中生成变更日志。
antsibull-changelog release
- 在 - stable-X分支中,验证- CHANGELOG.rst是否符合预期。
- 在 - stable-X分支中,添加、提交并将更改推送到- CHANGELOG.rst和- changelogs/changelog.yaml,以及可能已删除/存档的片段到**上游**仓库,而不是到origin仓库。
发布集合
- 在 - 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
- 等待新版本在集合的Ansible Galaxy页面上发布。它将显示在一个可下载的tarball列表中。 
- 为新的标签添加一个GitHub release。标题应为版本和内容,例如: - See https://github.com/ansible-collections/community.xxx/blob/stable-X/CHANGELOG.rst for all changes。
- 通过Bullhorn通讯宣布发布。 
- 在集合的固定问题/社区公告板以及 - #ansible-communityMatrix/IRC频道中宣布发布。
