Ansible 社区软件包集合移除流程
概述
有时,Ansible 社区会出于稳定性、法律或安全原因从 Ansible 软件包中移除集合。本文档描述了我们可能从 Ansible 社区软件包(构建数据)中移除集合的原因。
在紧急情况下(例如,集合中存在未修复的严重安全漏洞),Ansible 社区工程指导委员会 可以对紧急例外情况进行投票。在大多数情况下,我们遵循此页面上列出的规则。
通用流程
移除集合的通用流程遵循以下步骤
宣布即将移除集合。
移除集合。
在适当的情况下,重新添加集合。
宣布即将移除
在 Ansible 变更日志 (
https://github.com/ansible-community/ansible-build-data/blob/main/<X>/changelog.yaml
) 中宣布即将移除。有关如何将变更日志条目添加到 Ansible 变更日志的示例,请参阅以下链接 示例。如果可能,在集合的问题跟踪器中宣布即将移除。
在 The Bullhorn 中宣布即将移除。
移除集合
要从 Ansible 版本 X.0.0 中移除集合
从
ansible.in
(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/ansible.in
) 中移除。从
collection-meta.yaml
(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/collection-meta.yaml
) 中移除。在 Ansible 变更日志 (
https://github.com/ansible-community/ansible-build-data/blob/main/<X>/changelog.yaml
) 中记录 Ansible X.0.0 的第一个/下一个 alpha 版本的实际移除。有关如何将变更日志条目添加到 Ansible 变更日志的示例,请参阅以下链接 示例。
重新添加集合
将集合重新添加到 Ansible 的方式与首次添加相同。请参阅 将新集合添加到 Ansible 的流程 以供参考。
将集合重新添加到
ansible.in
(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/ansible.in
)。将集合重新添加到
collection-meta.yaml
(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/collection-meta.yaml
)。如果在尚未发布的版本的 Ansible 变更日志 (
https://github.com/ansible-community/ansible-build-data/blob/main/<X>/changelog.yaml
) 中宣布了移除,请删除该公告。
损坏的集合
如果集合已损坏,则社区可以从 Ansible 社区软件包中移除该集合。
识别和移除损坏的集合
移除条件
如果以下条件之一为真,则集合被视为已损坏
它依赖于 X.0.0 中包含的另一个集合,但无法与其中包含的实际版本一起使用,并且集合中没有仍然有效的任何内容。
在以下条件下,我们从 Ansible (X+1).0.0 中移除损坏的集合
该集合似乎未维护,没有人解决问题。
在下一个主要 Ansible 版本发布的至少两个月前以及在第一个 (X+1).0.0 测试版发布(功能冻结)的至少一个月前,公布了从 Ansible 中移除该集合的计划。
流程
下面提到的公告必须说明建议移除的原因,并提醒维护者和 Ansible 社区,为了防止移除,该集合迫切需要新的维护者来解决问题。
取消移除损坏的集合
条件
必须在 Ansible X+1 功能冻结之前修复问题并发布新版本(错误修复、次要或主要版本)。
有人必须承诺维护该集合,并在一段时间内防止类似情况发生。
流程
更新集合问题跟踪器中的移除问题并关闭该问题。
在 The Bullhorn 中宣布取消移除。
将集合重新添加到 Ansible
条件
在不经过 完整包含流程 的情况下,可以将集合重新包含在 Ansible 软件包中的条件
必须在 Ansible X+2 功能冻结之前修复问题并发布新版本。
有人必须承诺维护该集合,并在一段时间内防止类似情况发生。
流程
未维护的集合
移除其(前任)维护者明确弃用或放弃的集合
流程
如果当前主要版本为 X,并且下一个主要版本 X+1 尚未发布功能冻结版本,则从 Y=(X+1).0.0 中移除集合。如果下一个主要版本 X+1 已经发布了功能冻结版本,则从 Y=(X+2).0.0 中移除集合。
请参阅示例 Pull Request,了解如何在 ansible-build-data
存储库中移除集合。
识别和移除未经维护者弃用的未维护集合
移除条件
如果满足以下多个条件,则认为集合未得到维护
集合存储库中几个月内没有维护者活动(例如,Pull Request 合并和发布)。
CI 几个月内一直未通过(甚至未运行)。
错误报告和错误修复 PR 开始堆积,但未得到审查。
没有对未维护集合的完整正式定义。
流程
必须在 The Bullhorn 和集合的问题跟踪器中同时宣布集合似乎不再维护并且可能会从 Ansible 软件包中移除。
在 The Bullhorn 和集合的问题跟踪器中发布通知至少四周后,Ansible 社区工程指导委员会 (SC) 必须查看该集合并投票决定是否认为它未得到维护。投票必须至少开放一周。
如果 SC 未投票决定该集合似乎未得到维护,则停止此流程。需要相应更新问题。
如果下一个版本将发布 X.0.0,则设置 Y=X+1。如果 X.0.0 已经发布,但 (X+1).0.0 尚未发布,则设置 Y=X+2。
取消移除未维护的集合
条件
Ansible Y 尚未发布。
一位或多位维护者站出来或返回,以清理集合的状态。
新的维护者取得了具体成果(例如,CI 已修复,集合已发布,Pull Request 作者获得了有意义的反馈)。
流程
指导委员会投票决定结果是否可接受。
否决票必须附带充分说明清理工作为何不足。在这种情况下,此流程将停止。
如果指导委员会未投票反对继续移除集合(包括投票未达到法定人数的情况),则按如下方式进行。
将集合重新添加到 Ansible
没有简化流程。一旦集合从 Ansible Y.0.0 中移除,它需要经过完整的包含流程才能重新添加到 Ansible 软件包中。仅当指导委员会投票决定时,才可能出现例外情况。指导委员会可以批准或拒绝快速重新进入,而无需经过完整的审查流程。
不满足集合要求的集合
如果集合违反了一个或多个集合要求且未在允许的时间内解决违规问题,则可以将其从软件包中移除。
本节不适用于损坏或未维护的集合情况。请参阅本文档的相应段落。
识别和移除集合
移除条件
集合违反了一个或多个集合要求。
集合维护者未修复违规问题,并且未在本文档中规定的时间段内发布修复版本的集合。
流程
任何发现集合违反了一个或多个集合要求的社区成员都可以在该集合的存储库中提交问题。如果报告者不确定某件事是否构成违规,或者认为明显违反的指南不清楚,则应在继续之前通过提交社区主题咨询指导委员会。
在集合存储库中提交的问题应包含以下信息
对集合违反的相应集合要求的引用。
集合维护者需要执行的操作,以使集合符合要求。
集合解决问题的默认期限为问题创建后四周。它可能因违反的要求、SC 意见或其他情况而异。
如果违规问题未得到修复,或者报告者和维护者之间存在分歧,则报告者或其他人创建社区主题。
两名 SC 成员检查报告的情况,并在主题中确认从他们的角度来看违规问题确实存在,并且必须修复。
社区和 SC 就是否认为集合违反了要求并将其从软件包中移除进行投票。投票必须至少开放一周。
如果 SC 投票决定集合未违反要求,则停止此流程。需要相应更新问题。
如果下一个版本将发布 X.0.0,则设置 Y=X+1。如果 X.0.0 已经发布,但 (X+1).0.0 尚未发布,则设置 Y=X+2。
在集合存储库中的原始问题中宣布即将从 Ansible Y 中移除。
取消移除
条件
Ansible Y 尚未发布。
所有要求违规问题都已修复。
流程
SC 投票决定结果是否可接受。
否决票必须附带充分说明集合维护者执行的操作为何不足。
如果 SC 未投票反对移除集合(包括投票未达到法定人数的情况),则将继续移除。
如果 SC 投票取消移除,则将集合重新添加到 Ansible Y。
将集合重新添加到 Ansible
没有简化流程。一旦集合从 Ansible Y.0.0 中移除,它需要经过完整的包含流程才能重新添加到 Ansible 软件包中。仅当 SC 投票决定时,才可能出现例外情况。SC 可以批准或拒绝快速重新进入,而无需经过完整的审查流程。