64 lines
1.5 KiB
Groovy
64 lines
1.5 KiB
Groovy
pipeline {
|
||
agent any
|
||
|
||
tools {
|
||
nodejs 'NodeJS16'
|
||
}
|
||
|
||
environment {
|
||
// 抽取部署目标路径为公共变量
|
||
DEPLOY_DIR = '/data/nginx/www/fafamall/demo'
|
||
}
|
||
|
||
stages {
|
||
stage('拉取代码') {
|
||
steps {
|
||
checkout scm
|
||
}
|
||
}
|
||
|
||
stage('安装依赖') {
|
||
steps {
|
||
sh '''
|
||
rm -rf node_modules package-lock.json
|
||
npm config set registry https://registry.npmmirror.com
|
||
|
||
# 检查并移除恶意依赖
|
||
if grep -q "vab-contextmenu" package.json; then
|
||
echo "发现恶意依赖vab-contextmenu,正在移除..."
|
||
npm uninstall vab-contextmenu
|
||
fi
|
||
|
||
# 安装其他依赖
|
||
npm install
|
||
'''
|
||
}
|
||
}
|
||
|
||
stage('构建项目') {
|
||
steps {
|
||
sh 'npm run build'
|
||
}
|
||
}
|
||
|
||
stage('部署项目') {
|
||
steps {
|
||
sh '''
|
||
# 公共部署逻辑(创建目录、清理、复制)
|
||
mkdir -p ${DEPLOY_DIR}
|
||
rm -rf ${DEPLOY_DIR}/*
|
||
cp -r dist/* ${DEPLOY_DIR}/
|
||
'''
|
||
}
|
||
}
|
||
}
|
||
|
||
post {
|
||
success {
|
||
echo '项目部署成功.'
|
||
}
|
||
failure {
|
||
echo '项目部署失败.'
|
||
}
|
||
}
|
||
} |