使用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()
        }
    }
}
相关推荐
SuperEugene16 小时前
表单最佳实践:从 v-model 到自定义表单组件(含校验)
前端·javascript·vue.js
我叫黑大帅21 小时前
Vue3和Uniapp的爱恨情仇:小白也能懂的跨端秘籍
前端·javascript·vue.js
洋洋技术笔记1 天前
Vue实例与数据绑定
前端·vue.js
牛奶1 天前
Vue 基础理论 & API 使用
前端·vue.js·面试
牛奶1 天前
Vue 底层原理 & 新特性
前端·vue.js·面试
pe7er1 天前
状态提升:前端开发中的状态管理的设计思想
前端·vue.js·react.js
_AaronWong2 天前
Electron 实现仿豆包划词取词功能:从 AI 生成到落地踩坑记
前端·javascript·vue.js
wuhen_n2 天前
双端 Diff 算法详解
前端·javascript·vue.js
爱勇宝2 天前
别再混用了!import.meta.env 与 process.env 的本质差异一次讲透
前端·javascript·vue.js
从文处安3 天前
「九九八十一难」组合式函数到底有什么用?
前端·vue.js