pipeline { agent any tools { // 指定使用NodeJS18版本(需在Jenkins全局工具配置中提前配置该名称) nodejs 'NodeJS18' } environment { // UniApp项目所在目录 UNIAPP_DIR = 'java-mall-app-shop-admin' // 打包目标平台(可改为mp-weixin、app-plus等) TARGET_PLATFORM = 'h5' // 打包输出路径 OUTPUT_DIR = "${UNIAPP_DIR}/dist/build/${TARGET_PLATFORM}" // 部署目标路径(根据实际需求修改) DEPLOY_PATH = '/data/nginx/www/demo' } stages { stage('拉取代码') { steps { checkout scm echo "代码拉取完成,当前工作目录: ${env.WORKSPACE}" } } stage('安装项目依赖') { steps { sh """ # 进入UniApp项目目录 cd ${UNIAPP_DIR} || { echo "错误:UniApp项目目录 ${UNIAPP_DIR} 不存在!" exit 1 } # 清理旧依赖和缓存 rm -rf node_modules package-lock.json # 使用国内镜像源加速安装 npm config set registry https://registry.npmmirror.com # 安装依赖并显示版本信息 echo "当前NodeJS版本: \$(node -v)" echo "当前npm版本: \$(npm -v)" npm install """ } } stage('UniApp打包构建') { steps { sh """ cd ${UNIAPP_DIR} # 直接使用vue-cli-service执行打包(无需依赖package.json脚本) echo "开始打包${TARGET_PLATFORM}平台..." npx vue-cli-service uni-build \ --mode production \ --platform ${TARGET_PLATFORM} # 验证打包结果 if [ ! -d "${OUTPUT_DIR}" ]; then echo "错误:打包失败,未生成输出目录 ${OUTPUT_DIR}!" exit 1 fi echo "${TARGET_PLATFORM}平台打包完成,输出目录: ${OUTPUT_DIR}" """ } } stage('部署到服务器') { steps { sh """ # 创建部署目录 mkdir -p ${DEPLOY_PATH} # 复制打包产物到部署目录 cp -r ${OUTPUT_DIR}/* ${DEPLOY_PATH}/ echo "成功部署到 ${DEPLOY_PATH}" """ } } } post { success { echo "UniApp项目(${TARGET_PLATFORM})打包部署成功!" } failure { echo "UniApp项目打包部署失败,请查看详细日志!" } } }