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. 在《牛角报》中宣布即将移除。

移除集合

要从 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.inhttps://github.com/ansible-community/ansible-build-data/blob/main/<X>/ansible.in)。

  2. 将集合重新添加到 collection-meta.yamlhttps://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. 在 (X+1).0.0 版本发布前至少两个月,并在第一个 (X+1).0.0 beta 版本(功能冻结)发布前至少一个月公开宣布在下一个 Ansible 主要版本中移除该集合的计划。

流程

下面提到的公告必须说明提议移除的原因,并警告维护者和 Ansible 社区,为防止移除,该集合迫切需要能够解决问题的新维护者。

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

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

取消移除损坏的集合

条件

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

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

流程

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

  2. 在《牛角报》中宣布取消移除。

  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. 错误报告和错误修复 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 可以批准或拒绝在不经过完整审查过程的情况下快速重新进入。