在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. 复制新的部署包到目标目录

脚本内容详解

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

#!/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. 设置环境变量

    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. 定义路径

    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. 确保脚本在任何错误时停止执行

    set -e
    

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

  4. 加载 NVM

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

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

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

    yarn install
    

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

  8. 运行构建脚本

    npm run build:test
    

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

  9. 备份原来的包

    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. 复制新的包到目标目录

    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. 打印构建成功的消息

    echo "Build successful!"
    

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

总结

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

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

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

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT小辉同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值