赞
踩
人生旅途,总有人不断地走来,有人不断地离去。当新名字变成老名字,当老的名字渐渐模糊,又是一个故事的结束和另一个故事的开始。
在现代软件开发中,持续集成/持续部署(CI/CD)是提高开发效率和软件质量的重要实践。本文介绍了如何通过一个Bash脚本,在Jenkins中使用NVM(Node Version Manager)管理Node.js版本,并实现Node.js项目的自动化构建和部署。
这个脚本的主要功能包括:
以下是脚本的具体内容和逐步解释:
#!/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!"
设置环境变量
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
,用于备份目录命名。定义路径
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工作空间中构建生成的目录路径。确保脚本在任何错误时停止执行
set -e
启用此选项后,如果脚本中的任何命令失败(返回非零状态),脚本将立即退出。
加载 NVM
if [ -s "$NVM_DIR/nvm.sh" ]; then
. "$NVM_DIR/nvm.sh"
else
echo "NVM 未安装或路径不正确"
exit 1
fi
source
命令加载NVM。使用指定的 Node.js 版本
nvm install $NODE_VERSION
nvm use $NODE_VERSION
进入工作目录并安装 Yarn
cd $WORKSPACE_DIR
npm install yarn -g
yarn config set ignore-engines true
安装项目依赖
yarn install
使用Yarn安装项目的所有依赖包。
运行构建脚本
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!"
构建完成后,打印成功消息。
该脚本通过以下步骤实现了Node.js项目的自动化构建和部署:
通过使用这个脚本,您可以在Jenkins中实现一个稳定、高效的自动化构建和部署流程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。