菜单

每夜构建与发布

相关源文件

目的与范围

本文档详细介绍了 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.jsinstall 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 平台支持

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 版本的质量和稳定性。通过全面的测试和谨慎的发布工作流程,该项目在不断发展新功能和改进的同时,保持了与各种环境的兼容性。