在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中实现一个稳定、高效的自动化构建和部署流程。

相关推荐
Hello.Reader3 小时前
Elasticsearch Ruby 客户端安装与版本兼容指南
elasticsearch·jenkins·ruby
cxyll12347 小时前
postman+newman+jenkins接口自动化
自动化·jenkins·postman
楠奕7 小时前
elasticsearch8.12.0安装分词
运维·jenkins
测试老哥7 小时前
pytest+requests+allure自动化测试接入Jenkins学习
自动化测试·软件测试·学习·测试工具·职场和发展·jenkins·pytest
中国lanwp8 小时前
Jenkins Pipeline中参数化构建
java·jenkins
java资料站8 小时前
Jenkins
运维·jenkins
濮水大叔8 小时前
这个Database Transaction功能多多,你用过吗?
typescript·node.js·nestjs
鹧鸪yy9 小时前
认识Node.js及其与 Nginx 前端项目区别
前端·nginx·node.js
weixin_473894779 小时前
mac 电脑安装类似 nvm 的工具,node 版本管理工具
macos·node.js
foundbug9999 小时前
Node.js导入MongoDB具体操作
数据库·mongodb·node.js