升级 Node.js
编辑升级 Node.js编辑
Kibana 需要特定版本的 Node.js 才能运行。从源代码运行 Kibana 时,必须在本地安装此版本。
步骤 1:生成自定义 Node.js 构建编辑
在创建 PR 升级 Node.js 之前,我们必须首先生成匹配所需 Node.js 版本的必要自定义 Node.js 构建。
步骤 2:创建 PR 升级 Node.js编辑
所需版本的 Node.js 在整个 Kibana 源代码中的多个不同文件中列出。升级 Node.js 时,必须更新这些文件。
-
.node-version
-
.nvmrc
-
package.json
- 版本在engines.node
字段中指定(如果可能,也升级@types/node
以匹配新版本,在devDependencies
和resolutions
下)。 -
WORKSPACE.bazel
- 版本在node_version
属性中指定。除了此属性之外,node_repositories
下的文件列表必须与其各自的 SHA256 哈希值一起更新。这些可以在公共kibana-custom-node-artifacts
GCP 存储桶内的SHASUMS256.txt
文件中找到。Node.js v20.13.1 的示例:kibana-custom-node-artifacts/node-glibc-217/dist/v20.13.1/SHASUMS256.txt
有关 Node.js 版本如何以前升级的示例,请参阅 PR #128123。
主要 Node.js 升级的注意事项编辑
升级到新版本的 Node.js 时,必须执行以下额外步骤。
- 将新版本的 Node.js 支持的平台列表与Kibana 支持矩阵 进行比较。例如,这是Node.js 18 支持的平台列表。您可以通过更改所选分支来更改要查看的 Node.js 主要版本。如果 Node.js 已停止支持 Kibana 仍然支持的平台,则必须尽快采取适当的措施来弃用对该平台的支持。这样,在当前使用的主要版本的 Node.js 达到生命周期结束 之前,就可以停止对它的支持。
Node.js 的自定义构建编辑
由于 Node.js 16 即将提前结束生命周期,而 Node.js 18 不再支持 Kibana 支持的相同平台(最显著的是 CentOS7/RHEL7),因此我们无法将官方的 Node.js 二进制文件与 Kibana 的 Linux 发行版捆绑在一起。为了继续支持这些较旧的平台,我们将 Kibana 的 Linux 发行版与Node.js 的自定义构建 捆绑在一起,该构建具有扩展的向后兼容性。官方 Node.js 构建与我们的自定义构建之间的唯一区别是,它编译时使用的 glibc
版本不同。
如何开始新的构建编辑
要生成新的自定义 Node.js 构建,请在我们的专用 Buildkite 管道上开始新的构建(需要 Elastic 员工权限)。为其提供一个清晰的名称(例如 Node 20.13.1
),并记住将自定义 OVERRIDE_TARGET_VERSION
环境变量设置为所需的 Node.js 版本 - 例如 OVERRIDE_TARGET_VERSION=20.13.1
。您可以在“新建构建”对话框中展开“选项 >”找到“环境变量”字段。
回溯编辑
以下规则并非一成不变。回溯时请使用最佳判断。
Node.js 修补程序升级编辑
通常,您希望将 Node.js 修补程序 升级回溯到运行相同 主要 Node.js 版本的所有支持的发布分支(目前是所有分支,但将来可能会改变)。
- 如果当前版本是 8.1.x,则主 PR 应针对
main
并回溯到7.17
和8.1
(GitHub 标签示例:backport:all-open
)。
Node.js 次要升级编辑
通常,您希望将 Node.js 次要 升级回溯到上一个主要 Kibana 发布分支(如果它运行相同 主要 Node.js 版本)。
- 如果当前版本是 8.1.x,则主 PR 应针对
main
并回溯到7.17
,而将8.1
分支保持原样(GitHub 标签示例:auto-backport
+v7.17.13
)。
Node.js 主要升级编辑
通常,您希望将 Node.js 主要 升级回溯到上一个主要 Kibana 发布分支。
- 如果当前版本是 8.1.x,则主 PR 应针对
main
并回溯到7.17
,而将8.1
分支保持原样(GitHub 标签示例:auto-backport
+v7.17.13
)。
升级已安装的 Node.js 版本编辑
以下说明假设使用nvm 来管理本地安装的 Node.js 版本。
运行以下命令以安装新版本的 Node.js。将 <version>
替换为所需的 Node.js 版本。
nvm install <version>
要使用新版本的 Node.js 安装与当前安装的相同的全局 npm 模块,请使用 --reinstall-packages-from
命令行参数(可选地将 16
替换为所需的源版本)。
nvm install <version> --reinstall-packages-from=16
如果需要,请通过运行以下命令卸载旧版本的 Node.js。将 <old-version>
替换为要卸载的版本的完整版本号。
nvm uninstall <old-version>
可选地,告诉 nvm 始终使用“最高”安装的 Node.js 16 版本。如果需要不同的主要版本,请替换 16
。
nvm alias default 16
或者,在末尾包含完整版本号以指定特定的默认版本。