本文档详细介绍了 NVM 项目的开发、测试和发布流程,重点关注每日构建和正式发布的管理方式。它涵盖了从代码变更到测试再到部署的工作流程,强调了项目如何确保跨不同平台和架构的质量。有关测试框架本身的信息,请参阅 测试框架,有关 CI/CD 管道的详细信息,请参阅 CI/CD 管道。
NVM 遵循结构化的发布工作流程,以确保所有变更在向用户发布前都经过适当的测试。该项目同时使用每日构建进行开发测试和稳定版本进行最终用户发布。
来源:test/installation_node/install hook1-46 test/xenial/install hook1-46
每日构建是开发快照,允许在最近的更改包含在正式发布之前进行测试。这些构建有助于在开发周期的早期发现问题。
来源:test/installation_node/install hook1-46 test/xenial/install hook1-46
NVM 的每日构建在不同环境中进行严格测试,以确保与各种平台和配置的兼容性。每个每日构建都针对多种用例进行测试。
| 测试类别 | 描述 | 示例测试文件 |
|---|---|---|
| 安装测试 | 验证基本的安装功能 | install hook |
| 源代码构建 | 测试从源代码构建 Node.js | install from source |
| 平台特定 | 针对 Ubuntu Xenial 等特定平台的测试 | xenial/* |
| 架构测试 | 针对不同 CPU 架构的测试 | install from source without V8 snapshot for ARM |
| 自定义参数 | 使用特定参数测试安装 | install from source with thread parameter |
来源:test/installation_node/install from source1-30 test/installation_node/install from source without V8 snapshot for ARM1-26 test/installation_node/install hook1-46
正式发布遵循比每日构建更结构化的流程,增加了额外的验证步骤以确保稳定性。
来源:test/installation_node/install hook1-46 test/xenial/install hook1-46
对于每个发布版本,NVM 都在全面的环境矩阵中测试安装和功能。
| 平台 | Node.js 版本 | 安装方法 | Shell 环境 |
|---|---|---|---|
| Linux (Ubuntu) | 最新 LTS、当前版本 | 二进制、源代码 | Bash, Zsh, Fish |
| macOS | 最新 LTS、当前版本 | 二进制、源代码 | Bash, Zsh, Fish |
| ARM 平台 | 最新 LTS、当前版本 | 来源 | Bash |
| Windows (WSL) | 最新 LTS | 二进制文件 | Bash |
来源:test/installation_node/install from source without V8 snapshot for ARM1-26 test/xenial/install from source1-30
NVM 项目提供了一个钩子机制,允许第三方工具与安装过程集成。这些钩子可以被包管理器、CI/CD 系统或自定义安装脚本使用。
钩子机制在安装过程中实现,并由 NVM_INSTALL_THIRD_PARTY_HOOK 环境变量控制。当定义时,此变量应包含一个将在安装过程中调用的函数名。
来源:test/installation_node/install hook10-18 test/installation_node/install hook28-45 test/xenial/install hook10-18 test/xenial/install hook28-45
NVM 支持二进制安装和从源代码构建,这对于每日构建和跨平台测试尤为重要。
来源:test/installation_node/install from source1-30 test/xenial/install from source1-30 test/installation_node/install from source with thread parameter1-34
在从源代码构建时(通常是每日构建或测试新功能所必需的),NVM 支持各种构建配置选项。
| 选项 | 描述 | 使用示例 |
|---|---|---|
-j / --jobs | 并行 make 作业数 | nvm install -s -j 2 v0.10.7 |
-s / --source | 强制从源代码构建 | nvm install -s v0.10.7 |
--without-npm | 跳过 npm 安装 | nvm install -s --without-npm v0.10.7 |
--no-progress | 隐藏下载进度 | nvm install --no-progress v0.10.7 |
来源:test/installation_node/install from source with thread parameter15-29 test/xenial/install from source with thread parameter15-29
NVM 的发布流程包括了对不同平台和架构的测试和考虑。
ARM 架构需要特殊处理,特别是对于较旧的 Node.js 版本,正如那些禁用 ARM 构建的 V8 快照的测试用例所示。
来源:test/installation_node/install from source without V8 snapshot for ARM12-25 test/xenial/install from source without V8 snapshot for ARM12-25
每次每日构建和发布都会进行版本验证,以确保安装和功能正确。
来源:test/installation_node/install from source21-25 test/xenial/install from source21-25 test/xenial/install version specified in .nvmrc from source15-20
成功测试后,将发布版本并使其可供用户使用。这包括在存储库中创建发布标签和更新文档。
来源:基于标准的发布实践,未直接引用在提供的文件中。
NVM 项目的每日构建和发布遵循结构化流程,确保跨不同平台和 Node.js 版本的质量和稳定性。通过全面的测试和谨慎的发布工作流程,该项目在不断发展新功能和改进的同时,保持了与各种环境的兼容性。