在Jenkins 中使用 NVM 管理 Node.js 部署项目的自动化脚本

在Jenkins 中使用 NVM 管理 Node.js 部署项目的自动化脚本

人生旅途,总有人不断地走来,有人不断地离去。当新名字变成老名字,当老的名字渐渐模糊,又是一个故事的结束和另一个故事的开始。

在现代软件开发中,持续集成/持续部署(CI/CD)是提高开发效率和软件质量的重要实践。本文介绍了如何通过一个Bash脚本,在Jenkins中使用NVM(Node Version Manager)管理Node.js版本,并实现Node.js项目的自动化构建和部署。

脚本功能概述

这个脚本的主要功能包括:

  1. 设置环境变量
  2. 加载 NVM 并使用指定的 Node.js 版本
  3. 进入 Jenkins 工作目录并安装 Yarn
  4. 安装项目依赖
  5. 运行构建脚本
  6. 备份现有部署包
  7. 复制新的部署包到目标目录

脚本内容详解

以下是脚本的具体内容和逐步解释:

bash 复制代码
#!/bin/bash
BUILD_ID=DONTKILLME
# 设置必要的环境变量
NODE_VERSION="17.0.0"
NVM_DIR="/usr/local/src/nvm/nvm-0.39.7"
WORKSPACE_DIR="/home/jenkins/jenkins_home/workspace/lowcode-web"
current_datetime=$(date +%Y-%m-%d_%H-%M-%S)
# Paths
dist_test_path="/home/lowcode-platform/lowcode-web/dist-test"
backup_path="/home/lowcode-platform/lowcode-web/dist-test_$current_datetime"
jenkins_dist_test_path="/home/jenkins/jenkins_home/workspace/lowcode-web/dist-test"
# 确保脚本在任何错误时停止执行
set -e

# 加载 NVM (Node Version Manager)
if [ -s "$NVM_DIR/nvm.sh" ]; then
    . "$NVM_DIR/nvm.sh"
else
    echo "NVM 未安装或路径不正确"
    exit 1
fi

# 使用指定的 Node.js 版本
nvm install $NODE_VERSION
nvm use $NODE_VERSION

# 进入工作目录
cd $WORKSPACE_DIR

# 安装 Yarn
npm install yarn -g
# 忽略引擎检查
yarn config set ignore-engines true
# 安装项目依赖
yarn install
# 运行构建脚本
npm run build:test

# 部署包
# 备份原来的包
if [ -d "$dist_test_path" ]; then
    mv "$dist_test_path" "$backup_path"
    echo "Moved existing dist-test to $backup_path"
else
    echo "No existing dist-test directory found, skipping move"
fi

# 覆盖新的包
if [ -d "$jenkins_dist_test_path" ]; then
    cp -r "$jenkins_dist_test_path" "$dist_test_path"
    echo "Copied new dist-test from Jenkins workspace to $dist_test_path"
else
    echo "Jenkins dist-test directory not found at $jenkins_dist_test_path"
    exit 1
fi

# 打印构建成功的消息
echo "Build successful!"
脚本步骤详解
  1. 设置环境变量

    bash 复制代码
    NODE_VERSION="17.0.0"
    NVM_DIR="/usr/local/src/nvm/nvm-0.39.7"
    WORKSPACE_DIR="/home/jenkins/jenkins_home/workspace/lowcode-web"
    current_datetime=$(date +%Y-%m-%d_%H-%M-%S)
    • NODE_VERSION:指定要使用的Node.js版本。
    • NVM_DIR:NVM的安装路径。
    • WORKSPACE_DIR:Jenkins的工作目录路径。
    • current_datetime:当前日期和时间,格式为YYYY-MM-DD_HH-MM-SS,用于备份目录命名。
  2. 定义路径

    bash 复制代码
    dist_test_path="/home/lowcode-platform/lowcode-web/dist-test"
    backup_path="/home/lowcode-platform/lowcode-web/dist-test_$current_datetime"
    jenkins_dist_test_path="/home/jenkins/jenkins_home/workspace/lowcode-web/dist-test"
    • dist_test_path:目标部署目录的路径。
    • backup_path:备份目录的路径,带有当前日期和时间。
    • jenkins_dist_test_path:Jenkins工作空间中构建生成的目录路径。
  3. 确保脚本在任何错误时停止执行

    bash 复制代码
    set -e

    启用此选项后,如果脚本中的任何命令失败(返回非零状态),脚本将立即退出。

  4. 加载 NVM

    bash 复制代码
    if [ -s "$NVM_DIR/nvm.sh" ]; then
        . "$NVM_DIR/nvm.sh"
    else
        echo "NVM 未安装或路径不正确"
        exit 1
    fi
    • 检查NVM的shell脚本是否存在并可读。
    • 如果存在,使用source命令加载NVM。
    • 如果不存在,输出错误信息并退出脚本。
  5. 使用指定的 Node.js 版本

    bash 复制代码
    nvm install $NODE_VERSION
    nvm use $NODE_VERSION
    • 安装指定版本的Node.js。
    • 使用指定版本的Node.js。
  6. 进入工作目录并安装 Yarn

    bash 复制代码
    cd $WORKSPACE_DIR
    npm install yarn -g
    yarn config set ignore-engines true
    • 进入Jenkins的工作目录。
    • 全局安装Yarn包管理器。
    • 配置Yarn忽略引擎检查(即使项目要求的Node.js版本与当前版本不一致,也不报错)。
  7. 安装项目依赖

    bash 复制代码
    yarn install

    使用Yarn安装项目的所有依赖包。

  8. 运行构建脚本

    bash 复制代码
    npm run build:test

    运行项目的构建脚本,生成测试环境的构建文件。

  9. 备份原来的包

    bash 复制代码
    if [ -d "$dist_test_path" ]; then
        mv "$dist_test_path" "$backup_path"
        echo "Moved existing dist-test to $backup_path"
    else
        echo "No existing dist-test directory found, skipping move"
    fi
    • 检查目标部署目录是否存在。
    • 如果存在,将其移动到备份目录,并打印备份成功的消息。
    • 如果不存在,打印提示信息,跳过移动步骤。
  10. 复制新的包到目标目录

    bash 复制代码
    if [ -d "$jenkins_dist_test_path" ]; then
        cp -r "$jenkins_dist_test_path" "$dist_test_path"
        echo "Copied new dist-test from Jenkins workspace to $dist_test_path"
    else
        echo "Jenkins dist-test directory not found at $jenkins_dist_test_path"
        exit 1
    fi
    • 检查Jenkins工作空间中的构建目录是否存在。
    • 如果存在,将其复制到目标部署目录,并打印复制成功的消息。
    • 如果不存在,打印错误信息并退出脚本。
  11. 打印构建成功的消息

    bash 复制代码
    echo "Build successful!"

    构建完成后,打印成功消息。

总结

该脚本通过以下步骤实现了Node.js项目的自动化构建和部署:

  1. 设置和加载环境变量
  2. 使用NVM管理Node.js版本,确保使用指定的Node.js版本
  3. 安装项目依赖并运行构建脚本
  4. 备份现有的部署目录,确保可以在出错时回滚
  5. 复制新的构建文件到目标部署目录
  6. 打印构建成功的消息,方便追踪构建状态

通过使用这个脚本,您可以在Jenkins中实现一个稳定、高效的自动化构建和部署流程。

相关推荐
Agent产品评测局8 小时前
企业自动化项目,如何做好内部推广与员工培训?——企业级智能体落地与人才赋能实测指南
运维·人工智能·ai·chatgpt·自动化
晴天168 小时前
Neutralinojs 核心原理解析
javascript·electron·node.js
chenxiandiao3169 小时前
Gemini自动化出图
ai作画·自动化
晴天169 小时前
【跨桌面应用开发】Neutralinojs快速入门指南
前端·javascript·electron·node.js
喵手9 小时前
Python爬虫实战:手把手带你打造私人前端资产库 - Python 自动化抓取开源 SVG 图标全目录!
爬虫·python·自动化·爬虫实战·零基础python爬虫教学·前端资产库打造·采集svg图标目录
MadPrinter9 小时前
GitHub Trending 每日精选 - 2026-03-28
ai·自动化·github·openclaw
ybwycx9 小时前
Node.js卸载超详细步骤(附图文讲解)
node.js
逸Y 仙X10 小时前
文章十三:ElasticSearch数据更新实战
java·大数据·elasticsearch·搜索引擎·jenkins
ooseabiscuit10 小时前
node.js卸载并重新安装(超详细图文步骤)
node.js
个微管理10 小时前
微信小技巧:学会这四招,让你的微信“自动”替你打工
微信·智能手机·自动化·微信公众平台·微信开放平台