Ansible 社区软件包集合移除流程

概述

有时,Ansible 社区会出于稳定性、法律或安全原因从 Ansible 软件包中移除集合。本文档描述了我们为何可能从 Ansible 社区软件包构建数据)中移除集合的原因。

在紧急情况下(例如,集合中存在未修复的严重安全漏洞),Ansible 社区工程指导委员会可以投票决定紧急例外情况。在大多数情况下,我们遵循此页面上列出的规则。

一般流程

移除集合的一般流程遵循以下步骤

  1. 宣布即将移除集合。

  2. 移除集合。

  3. 在适当的时候,重新添加集合。

宣布即将移除

  1. 在 Ansible 变更日志中宣布即将移除(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/changelog.yaml)。请参阅以下链接,了解如何在 Ansible 变更日志中添加变更日志条目的示例

  2. 如果可能,请在集合的问题跟踪器中宣布即将移除。

  3. 在 The Bullhorn 中宣布即将移除。

移除集合

要从 Ansible 版本 X.0.0 中移除集合

  1. ansible.in 中移除(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/ansible.in)。

  2. collection-meta.yaml 中移除(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/collection-meta.yaml)。

  3. 在 Ansible 变更日志中记录 Ansible X.0.0 的第一个/下一个 alpha 版本的实际移除(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/changelog.yaml)。请参阅以下链接,了解如何在 Ansible 变更日志中添加变更日志条目的示例

重新添加集合

将集合重新添加到 Ansible 的工作方式与首次添加时相同。有关参考,请参阅将新集合添加到 Ansible 的过程

  1. 将集合重新添加到 ansible.in 中(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/ansible.in)。

  2. 将集合重新添加到 collection-meta.yaml 中(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/collection-meta.yaml)。

  3. 如果已经在 Ansible 变更日志中宣布了某个尚未发布的版本的移除(https://github.com/ansible-community/ansible-build-data/blob/main/<X>/changelog.yaml),请删除该公告。

损坏的集合

如果集合已损坏,社区可以从 Ansible 社区软件包中移除该集合。

识别和移除损坏的集合

移除条件

如果满足以下条件之一,则认为集合已损坏

  1. 它依赖于 X.0.0 中包含的另一个集合,但无法与包含的实际版本一起工作,并且集合中没有仍然可以工作的内容。

在以下情况下,我们会从 Ansible (X+1).0.0 中移除损坏的集合

  1. 该集合似乎无人维护,并且没有人修复这些问题。

  2. 计划在下一个主要 Ansible 版本中移除该集合的计划在 (X+1).0.0 版本发布前至少两个月,并且在第一个 (X+1).0.0 beta 版本(功能冻结)之前至少一个月发布。

流程

下面提到的公告必须说明提议移除的原因,并提醒维护人员和 Ansible 社区,为了防止移除,该集合迫切需要可以修复问题的新维护人员。

  1. 在 Ansible X+1 中宣布即将移除.

  2. 从 Ansible X+1 中移除集合.

取消移除损坏的集合

条件

  1. 必须在 Ansible X+1 功能冻结之前修复这些问题并发布新版本(错误修复、次要版本或主要版本)。

  2. 必须有人承诺维护该集合,并且至少在一段时间内防止出现类似情况。

流程

  1. 更新集合的问题跟踪器中的移除问题并关闭该问题。

  2. 在 The Bullhorn 中宣布取消移除。

  3. 将集合重新添加到 Ansible X+1.

将集合重新添加到 Ansible

条件

可以在不经过完整包含流程的情况下将集合重新包含到 Ansible 软件包中的条件

  1. 必须在 Ansible X+2 功能冻结之前修复这些问题并发布新版本。

  2. 必须有人承诺维护该集合,并且至少在一段时间内防止出现类似情况。

流程

  1. 遵循将新集合添加到 Ansible 的常规流程

无人维护的集合

移除已被其(前)维护者明确弃用或放弃的集合

流程

如果当前主要版本是 X,并且下一个主要版本 X+1 尚未发布功能冻结版本,则从 Y=(X+1).0.0 中移除该集合。如果下一个主要版本 X+1 已经发布了功能冻结版本,则从 Y=(X+2).0.0 中移除该集合。

  1. 宣布即将从 Y Ansible 版本中移除.

  2. 从 Y Ansible 版本中移除集合.

请参阅 ansible-build-data 存储库中的示例拉取请求,了解如何移除集合。

识别和移除未经其维护者弃用且无人维护的集合

移除条件

如果满足以下多个条件,则认为集合无人维护

  1. 该集合仓库已数月没有维护者活动(例如,合并拉取请求和发布版本)。

  2. CI(持续集成)已停止通过(甚至数月没有运行)。

  3. Bug 报告和 Bug 修复 PR 开始堆积,但没有得到审查。

对于未维护的集合,没有完整的正式定义。

流程

  1. 该集合不再被维护并可能从 Ansible 包中移除的情况,必须在 The Bullhorn 和该集合的问题跟踪器中都进行公告。

  2. 在 The Bullhorn 和该集合的问题跟踪器中发布通知至少四周后,Ansible 社区工程指导委员会 (SC) 必须查看该集合,并投票认为它未被维护。投票必须公开至少一周。

  3. 如果 SC 没有投票认为该集合似乎未被维护,则流程停止。需要相应地更新问题。

  4. 如果下一个版本将发布 X.0.0,则设置 Y=X+1。如果 X.0.0 已经发布,但 (X+1).0.0 尚未发布,则设置 Y=X+2。

  5. 公告即将从 Ansible Y 中移除.

  6. 从 Ansible Y 中移除集合.

取消移除未维护的集合

条件

  1. Ansible Y 尚未发布。

  2. 一个或多个维护者挺身而出或回归,清理该集合的状态。

  3. 新的维护者取得了具体的成果(例如,CI 已修复,集合已发布,拉取请求作者收到了有意义的反馈)。

流程

  1. 指导委员会投票决定结果是否可接受。

  2. 反对票必须附带充分的解释,说明为什么清理工作不足够。在这种情况下,此过程停止。

  3. 如果指导委员会没有投票反对仍然移除该集合(包括投票未达到法定人数的情况),请按如下步骤进行。

  4. 将集合重新添加到 Ansible Y.

将集合重新添加到 Ansible

没有简化的流程。一旦集合已从 Ansible Y.0.0 中移除,它需要经过完整的包含流程才能重新添加到 Ansible 包中。只有在指导委员会投票决定时才有可能出现例外。指导委员会可以批准或拒绝快速重新进入,而无需经过完整的审查流程。

不满足集合要求的集合

如果一个集合违反了集合要求中的一项或多项,并且在允许的时间内没有解决违规问题,则可以将其从包中移除。

本节不适用于损坏或未维护的集合的情况。相反,请参阅本文档的相应段落。

识别和移除集合

移除条件

  1. 一个集合违反了集合要求中的一项或多项。

  2. 集合维护者没有修复违规行为,也没有在此文档规定的时间内发布该集合的修复版本。

流程

  1. 任何社区成员如果发现某个集合违反了集合要求中的一项或多项,可以针对该集合的仓库提出问题。如果报告者不确定某些情况是否构成违规,或者认为明显违反的准则不明确,他们应该在继续操作之前,通过提交社区话题咨询指导委员会。

  2. 针对集合的仓库提出的问题应包括以下信息

  • 该集合违反的相应集合要求的参考。

  • 集合维护者需要采取的行动,以使该集合符合要求。

  1. 解决问题的集合的默认期限是从问题创建之日起四周。它可能会因违反的要求、SC 的意见或其他情况而有所不同。

  2. 如果违规行为未得到修复,或者报告者和维护者之间存在分歧,则报告者或其他人会创建一个社区话题

  3. 两位 SC 成员检查报告的情况,并在主题中确认从他们的角度来看,违规行为确实存在,并且必须修复。

  4. 社区和 SC 投票决定是否认为该集合违反要求并将其从包中移除。投票必须公开至少一周。

  5. 如果 SC 投票决定该集合没有违反要求,则流程停止。需要相应地更新问题。

  6. 如果下一个版本将发布 X.0.0,则设置 Y=X+1。如果 X.0.0 已经发布,但 (X+1).0.0 尚未发布,则设置 Y=X+2。

  7. 在集合仓库的原始问题中公告即将从 Ansible Y 中移除。

  8. 公告即将从 Ansible Y 中移除.

  9. 从 Ansible Y 中移除集合.

取消移除

条件

  1. Ansible Y 尚未发布。

  2. 所有违规要求都已修复。

流程

  1. SC 投票决定结果是否可接受。

  2. 反对票必须附带充分的解释,说明为什么集合维护者采取的行动不足够。

  3. 如果 SC 没有投票反对移除集合(包括投票未达到法定人数的情况),则将继续移除。

  4. 如果 SC 投票决定取消移除,将集合重新添加到 Ansible Y

将集合重新添加到 Ansible

没有简化的流程。一旦集合已从 Ansible Y.0.0 中移除,它需要经过完整的包含流程才能重新添加到 Ansible 包中。只有在 SC 投票决定时才有可能出现例外。SC 可以批准或拒绝快速重新进入,而无需经过完整的审查流程。