更新 java-mall-app-shop-admin/Jenkinsfile
This commit is contained in:
parent
755e9ee4de
commit
7118db87c2
186
java-mall-app-shop-admin/Jenkinsfile
vendored
186
java-mall-app-shop-admin/Jenkinsfile
vendored
@ -1,99 +1,129 @@
|
|||||||
pipeline {
|
pipeline {
|
||||||
agent any
|
agent any
|
||||||
|
|
||||||
|
// 工具配置:指定Node.js版本(需在Jenkins全局工具中预先配置)
|
||||||
tools {
|
tools {
|
||||||
nodejs 'NodeJS18'
|
nodejs "NodeJS18"
|
||||||
}
|
}
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
UNIAPP_DIR = 'java-mall-app-shop-admin'
|
// 项目核心路径配置
|
||||||
TARGET_PLATFORM = 'h5'
|
UNI_APP_DIR = "./java-mall-app-shop-admin" // 项目根目录
|
||||||
OUTPUT_DIR = "${UNIAPP_DIR}/dist/build/${TARGET_PLATFORM}"
|
OUTPUT_DIR = "${UNI_APP_DIR}/dist/build/h5" // uniapp H5编译输出目录
|
||||||
DEPLOY_PATH = '/data/nginx/www/uniapp-h5'
|
DEPLOY_TARGET = "/data/nginx/www/fafamall/demo" // 本地部署目录
|
||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
stage('拉取代码') {
|
stage('拉取代码') {
|
||||||
steps {
|
steps {
|
||||||
checkout scm
|
checkout scm // 从代码仓库拉取最新代码
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('彻底清理并安装完整依赖') {
|
stage('安装依赖(含uniapp核心)') {
|
||||||
steps {
|
steps {
|
||||||
sh """
|
script {
|
||||||
cd ${UNIAPP_DIR} || {
|
dir("${UNI_APP_DIR}") {
|
||||||
echo "错误:项目目录不存在!"
|
echo "清理旧依赖..."
|
||||||
exit 1
|
sh 'rm -rf node_modules package-lock.json'
|
||||||
|
sh 'npm cache clean --force'
|
||||||
|
|
||||||
|
echo "设置国内镜像源加速..."
|
||||||
|
sh 'npm config set registry https://registry.npmmirror.com'
|
||||||
|
sh 'npm config set @dcloudio:registry https://registry.npmmirror.com'
|
||||||
|
|
||||||
|
echo "安装uniapp必需依赖..."
|
||||||
|
sh 'npm install @vue/cli-service@5.0.8 --save-dev'
|
||||||
|
sh 'npm install @dcloudio/vue-cli-plugin-uni@latest --save-dev'
|
||||||
|
sh 'npm install'
|
||||||
|
|
||||||
|
// 验证核心依赖
|
||||||
|
def uniPluginExists = fileExists("${UNI_APP_DIR}/node_modules/@dcloudio/vue-cli-plugin-uni")
|
||||||
|
if (!uniPluginExists) {
|
||||||
|
error "uniapp核心依赖安装失败!缺少@dcloudio/vue-cli-plugin-uni"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('编译Uniapp项目(H5平台)') {
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
dir("${UNI_APP_DIR}") {
|
||||||
|
echo "开始编译Uniapp项目..."
|
||||||
|
sh 'npx vue-cli-service uni-build --mode production --platform h5'
|
||||||
|
|
||||||
|
// 验证编译产物
|
||||||
|
if (!fileExists("${OUTPUT_DIR}")) {
|
||||||
|
error "编译失败!未生成${OUTPUT_DIR}目录"
|
||||||
|
}
|
||||||
|
echo "Uniapp编译完成,输出路径:${OUTPUT_DIR}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('部署到本地目录') {
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
echo "开始部署到本地目录:${DEPLOY_TARGET}"
|
||||||
|
|
||||||
|
// 1. 确保目标目录存在并清空
|
||||||
|
sh """
|
||||||
|
mkdir -p ${DEPLOY_TARGET}
|
||||||
|
rm -rf ${DEPLOY_TARGET}/*
|
||||||
|
"""
|
||||||
|
|
||||||
|
// 2. 复制构建产物到目标目录
|
||||||
|
sh "cp -r ${OUTPUT_DIR}/* ${DEPLOY_TARGET}/"
|
||||||
|
|
||||||
|
// 3. 验证部署结果
|
||||||
|
def fileCount = sh(
|
||||||
|
script: "ls -la ${DEPLOY_TARGET} | wc -l",
|
||||||
|
returnStdout: true
|
||||||
|
).trim()
|
||||||
|
|
||||||
|
if (fileCount.toInteger() <= 2) { // 只包含.和..说明部署失败
|
||||||
|
error "部署失败:目标目录${DEPLOY_TARGET}为空"
|
||||||
}
|
}
|
||||||
|
|
||||||
# 彻底清理旧依赖和缓存
|
echo "部署完成!文件已输出到${DEPLOY_TARGET}"
|
||||||
rm -rf node_modules package-lock.json
|
}
|
||||||
npm cache clean --force # 清理npm缓存,解决依赖下载不完整问题
|
|
||||||
|
|
||||||
# 设置镜像源(确保国内访问稳定)
|
|
||||||
npm config set registry https://registry.npmmirror.com
|
|
||||||
# 额外配置@dcloudio私有源(关键:解决uni系列包下载问题)
|
|
||||||
npm config set @dcloudio:registry https://registry.npmmirror.com
|
|
||||||
|
|
||||||
# 安装核心依赖(指定稳定版本,避免latest版本兼容性问题)
|
|
||||||
npm install @vue/cli-service@5.0.8 --save-dev
|
|
||||||
npm install @dcloudio/vue-cli-plugin-uni@3.0.0 --save-dev
|
|
||||||
|
|
||||||
# 强制安装缺失的i18n模块
|
|
||||||
npm install @dcloudio/uni-cli-i18n@latest --save-dev
|
|
||||||
|
|
||||||
# 安装项目其他依赖
|
|
||||||
npm install
|
|
||||||
|
|
||||||
# 验证依赖是否安装完整
|
|
||||||
echo "检查关键模块是否存在..."
|
|
||||||
if [ ! -d "node_modules/@dcloudio/uni-cli-i18n" ]; then
|
|
||||||
echo "错误:@dcloudio/uni-cli-i18n 仍未安装成功!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
"""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('UniApp打包构建') {
|
|
||||||
steps {
|
|
||||||
sh """
|
|
||||||
cd ${UNIAPP_DIR}
|
|
||||||
|
|
||||||
# 再次验证命令可用性
|
|
||||||
npx vue-cli-service help | grep uni-build || {
|
|
||||||
echo "错误:uni-build命令仍不可用!"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# 执行打包
|
|
||||||
npx vue-cli-service uni-build \
|
|
||||||
--mode production \
|
|
||||||
--platform ${TARGET_PLATFORM}
|
|
||||||
|
|
||||||
# 验证输出
|
|
||||||
if [ ! -d "${OUTPUT_DIR}" ]; then
|
|
||||||
echo "打包失败,未生成输出目录!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
"""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('部署到服务器') {
|
|
||||||
steps {
|
|
||||||
sh """
|
|
||||||
mkdir -p ${DEPLOY_PATH}
|
|
||||||
cp -r ${OUTPUT_DIR}/* ${DEPLOY_PATH}/
|
|
||||||
echo "部署成功!"
|
|
||||||
"""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
post {
|
post {
|
||||||
success { echo "打包部署成功" }
|
success {
|
||||||
failure { echo "打包部署失败" }
|
emailext(
|
||||||
|
to: "dev-team@example.com",
|
||||||
|
subject: "✅ Uniapp本地部署成功:${env.JOB_NAME} #${env.BUILD_NUMBER}",
|
||||||
|
body: """
|
||||||
|
项目部署成功!
|
||||||
|
- 项目名称:${env.JOB_NAME}
|
||||||
|
- 构建编号:${env.BUILD_NUMBER}
|
||||||
|
- 部署路径:${DEPLOY_TARGET}
|
||||||
|
- 构建日志:${env.BUILD_URL}console
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
failure {
|
||||||
|
emailext(
|
||||||
|
to: "dev-team@example.com",
|
||||||
|
subject: "❌ Uniapp本地部署失败:${env.JOB_NAME} #${env.BUILD_NUMBER}",
|
||||||
|
body: """
|
||||||
|
项目部署失败,请查看日志修复!
|
||||||
|
- 项目名称:${env.JOB_NAME}
|
||||||
|
- 构建编号:${env.BUILD_NUMBER}
|
||||||
|
- 错误日志:${env.BUILD_URL}console
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
always {
|
||||||
|
// 可选:清理工作空间
|
||||||
|
cleanWs()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user