弃用极狐GitLab 功能
有关本页面所用术语的详细信息,请参见术语。
重大变更政策
如果客户需要采取措施以确保其极狐GitLab 工作流不被中断,则任何变更都算作重大变更。
重大变更可能来自以下来源:
- 有意的产品变更
- 配置更新
- 第三方弃用
- 或许多其他来源
对于我们的许多用户来说,极狐GitLab 是一个零级系统。它在创建、发布、运营和扩展用户业务方面至关重要。重大变更的后果可能很严重。
产品经理和工程经理对其在平台上所做的变更给客户带来的影响负责。变更管理的责任在极狐GitLab,而不是客户。
我们旨在消除极狐GitLab 中的所有重大变更。 如果你已穷尽所有替代方案,并确信有充分理由说明为何应允许进行重大变更,你可以按照以下流程申请例外。
如何获得推进重大变更的批准?
默认情况下,不允许进行任何重大变更,除非重大变更实施计划已按照以下流程获得明确批准。
- 使用重大变更例外模板创建一个议题,并填写所有必填部分。
- 如果你的重大变更符合以下任一标准,请在申请中说明。这并不能保证申请会被批准,但有助于提出有力的论据。大多数获批的重大变更将至少属于以下类别之一:
- 重大变更的影响已通过自动化迁移完全缓解,无需客户采取任何行动。
- 根据对极狐GitLab 私有化部署 和 JihuLab.com 的实际产品使用情况跟踪,该重大变更将具有可忽略的客户影响。例如,如果它影响不到 1% 的极狐GitLab 客户群。
- 该重大变更是由于严重安全风险(严重性 1 或 2) 而实施的。
- 议题准备好接受审核后,请按照模板中的说明标记相关人员以启动审批流程。
- 在公开分享消息或确认你提议的时间表之前,请等待获得批准。从初次提交到批准或拒绝的时间会有所不同,因此请在提议的移除时间框架前至少提前六个月提交。
申请模板包含哪些详细信息?
- 执行摘要
- 影响评估
- 推出与沟通计划
- 内部沟通
- 客户沟通
在获得批准的重大变更之后,下一步是什么?
- 创建一个公开的弃用议题,它将作为客户了解该变更的真实信息来源。
- 按照以下指南,确保将该变更添加到弃用文档页面。
- 遵循你申请中已批准的推出与沟通计划。
更新弃用和移除文档
弃用和移除文档是从位于 gitlab/data/deprecations 的 YAML 文件生成的。
要在添加、编辑或删除 YAML 文件时更新弃用和移除页面:
-
在命令行中,转到你本地克隆的 gitlab-org/gitlab 项目。
-
在 data/deprecations 下创建、编辑或删除 YAML 文件。
-
编译弃用和移除文档:
shellbin/rake gitlab:docs:compile_deprecations -
如果需要,你可以使用以下命令验证文档是否是最新的:
shellbin/rake gitlab:docs:check_deprecations -
提交更新后的文档并推送更改。
-
使用弃用和移除模板创建合并请求。
相关手册页面:
- https://handbook.jihulab.com/handbook/marketing/blog/release-posts/#deprecations-removals-and-breaking-changes
- https://handbook.jihulab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-doc
更新重大变更窗口文档
重大变更窗口文档是从位于 gitlab/data/deprecations 的 YAML 文件生成的。
当满足以下所有条件时,弃用项会包含在重大变更窗口页面中:
- removal_milestone 与目标里程碑匹配(例如 19.0)。
- breaking_change 为 true。
- gitlab_com 不为 false。如果该字段不存在,则默认为 true。 对于不影响 JihuLab.com 的重大变更(例如,仅影响私有化部署实例的变更),请设置 gitlab_com: false。
窗口分配
默认情况下,所有匹配的弃用项都分配给主窗口,无论 YAML 文件中的 window 值如何。
应急窗口作为备用。要将重大变更移至应急窗口,请在其 YAML 文件中设置 window: 2。仅当至少有一个弃用项被分配给应急窗口时,页面上才会显示应急窗口部分。
如何更新页面
-
在命令行中,转到你本地克隆的 gitlab-org/gitlab 项目。
-
在 data/deprecations 下创建、编辑或删除 YAML 文件。
-
编译重大变更窗口文档:
shellbin/rake gitlab:docs:compile_windows -
更新弃用文档:
shellbin/rake gitlab:docs:compile_deprecations -
如果需要,你可以使用以下命令验证文档是否是最新的:
shellbin/rake gitlab:docs:check_windows -
提交更新后的文档并推送更改。
-
创建一个合并请求。
重大变更窗口页面使用的 YAML 字段
| 字段 | 是否必需 | 描述 |
|---|---|---|
| title | 是 | 作为指向弃用项链接的标题。 |
| removal_milestone | 是 | 必须与目标里程碑匹配。 |
| breaking_change | 是 | 必须为 true。 |
| gitlab_com | 否 | 设置为 false 以从页面中排除。默认为 true。 |
| window | 否 | 设置为 2 以分配给应急窗口。任何其他值(或不存在)则分配给主窗口。 |
| impact | 否 | 显示在表格中。可以是字符串或数组。 |
| scope | 否 | 显示在表格中。可以是字符串或数组。 |
| check_impact | 否 | 显示在表格中的 URL。仅当存在值时才渲染。 |
更新相关文档
当功能被弃用和移除时,更新相关文档。
API 弃用和重大变更
我们的 API 在弃用和重大变更有特殊规则。
REST API v4
REST API v4 不能对其进行重大变更,除非该 API 功能之前被 标记为实验性或测试版。
GraphQL API
GraphQL API 要求在可以进行重大变更之前,有一个比标准周期更长的弃用周期。
请参见 GraphQL 弃用流程。
Webhook 重大变更
我们不能对 webhook 负载进行重大变更。
有关构成重大 webhook 负载变更的内容以及替代做法,请参见 Webhook 重大变更指南。
如何处理对已弃用功能的社区贡献?
对已弃用功能的开发仅限于优先级 1 / 严重性 1 的缺陷修复。任何对已弃用功能的社区贡献在里程碑规划中都不太可能被优先考虑。
然而,在极狐GitLab,我们赋予自主权给我们的团队成员。因此,与该贡献相关的团队成员可以自行决定是否审核并合并它。
其他指南
有关配置移除,请参见 Omnibus 弃用政策。
有关版本控制和升级详细信息,请参见我们的发布和维护政策。