使用Jenkins自动化部署vue项目(2.528.2版本)

1、 插件市场安装NodeJS

2、全局工具配置-NodeJS 安装自己需要的版本

3、新建凭证

4、新建item

5、编辑内容

bash 复制代码
pipeline {
    agent any
    
    tools {
        nodejs 'node22' //之前安装node的名称
    }
    
    environment {
        DEPLOY_SERVER = '' //ip地址
        DEPLOY_PORT = '22' //端口
        DEPLOY_USER = 'root' //账号
        DEPLOY_PASSWORD = ''  // 密码
        TARGET_DIR = '/www/dist' //部署的目录
    }
    
    stages {
        stage('Checkout') {
            steps {
                git url: '', //git地址
                     branch: 'temporary', //分支
                     credentialsId: '96a5ad65-5728-47c8-ab12-1588ec7cb6b7' //凭证id
            }
        }
        
        stage('Build Frontend') {
            steps {
                sh '''
                    echo "设置 npm 镜像..."
                    npm config set registry https://registry.npmmirror.com
                    
                    echo "安装依赖..."
                    npm install
                    
                    echo "构建生产版本..."
                    npm run build:prod
                '''
            }
            
            post {
                success {
                    echo "✅ 前端构建成功"
                    sh 'ls -la dist/'
                }
                failure {
                    echo "❌ 前端构建失败"
                }
            }
        }
        
        stage('Deploy to Nginx') {
            steps {
                script {
                    try {
                        echo "🚀 开始部署到 ${DEPLOY_SERVER}"
                        
                        // 1. 清空目标目录
                        sh """
                            sshpass -p ${DEPLOY_PASSWORD} ssh -p ${DEPLOY_PORT} \
                            -o StrictHostKeyChecking=no \
                            -o ConnectTimeout=30 \
                            ${DEPLOY_USER}@${DEPLOY_SERVER} \
                            "rm -rf ${TARGET_DIR}/* && echo '目录清空成功'"
                        """
                        
                        // 2. 检查清空结果
                        sh """
                            sshpass -p ${DEPLOY_PASSWORD} ssh -p ${DEPLOY_PORT} \
                            -o StrictHostKeyChecking=no \
                            ${DEPLOY_USER}@${DEPLOY_SERVER} \
                            "test -z \"\$(ls -A ${TARGET_DIR})\" && echo '目录已完全清空' || echo '警告:目录可能未完全清空'"
                        """
                        
                        // 3. 上传文件
                        sh """
                            echo "上传文件中..."
                            sshpass -p ${DEPLOY_PASSWORD} scp -P ${DEPLOY_PORT} \
                            -o StrictHostKeyChecking=no \
                            -r dist/* \
                            ${DEPLOY_USER}@${DEPLOY_SERVER}:${TARGET_DIR}/
                        """
                        
                        // 4. 验证部署
                        sh """
                            echo "验证部署..."
                            sshpass -p ${DEPLOY_PASSWORD} ssh -p ${DEPLOY_PORT} \
                            -o StrictHostKeyChecking=no \
                            ${DEPLOY_USER}@${DEPLOY_SERVER} \
                            "echo '文件数量:'; find ${TARGET_DIR} -type f | wc -l; echo '目录大小:'; du -sh ${TARGET_DIR}"
                        """
                        
                        echo "✅ 部署完成"
                        
                    } catch (Exception e) {
                        echo "❌ 部署失败: ${e.getMessage()}"
                        currentBuild.result = 'FAILURE'
                        error('部署阶段失败')
                    }
                }
            }
            
            post {
                success {
                    echo "🎉 部署成功完成"
                }
                failure {
                    echo "⚠️ 部署失败"
                }
            }
        }
    }
    
    post {
        always {
            echo "📋 流水线执行完成 - ${currentBuild.result}"
            cleanWs()
        }
    }
}
相关推荐
迪康Defender5 小时前
终端安全运维:浅谈迪康端点安全一体化管理系统工具箱实用能力
运维·安全·信息可视化·自动化·运维开发·学习方法·远程工作
Meta Luo5 小时前
UI 自动化测试中的等待、超时和异步加载怎么处理
功能测试·测试工具·ui·回归·自动化
星光不问赶路人5 小时前
Vue 3 + TypeScript 中 enum 的使用实践
前端·vue.js
海森大数据5 小时前
AI + 自动化重塑催化研发!北化黑灯实验室入选 AI for Science 典型案例
运维·人工智能·自动化
志尊宝6 小时前
Vue3 零基础每日笔记(087):Vue3 高频面试题(下)
前端·javascript·vue.js·笔记·ecmascript·#vue.js
泵管家8 小时前
恒压供水控制器原理、选型与应用完全指南
经验分享·自动化
adinnet20269 小时前
企业碳资产管理:从碳盘查到碳交易,把排放理清
人工智能·深度学习·自动化
用户83134859306989 小时前
Vue3 事件:常用用法与开发高频坑点
前端·javascript·vue.js
其实防守也摸鱼9 小时前
存储管理:页面置换算法学习任务(测验题要求给出置换页面顺序,缺页次数,缺页率)
android·前端·数据库·学习·oracle·自动化
zcmodeltech9 小时前
沙盘模型控制系统STM32和PLC方案对比:选型逻辑与代码实现
stm32·嵌入式硬件·自动化