使用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()
        }
    }
}
相关推荐
嗜好ya2 分钟前
解决 Vite 项目中 import.meta.env 变量为 undefined 的问题
前端·javascript·vue.js
云捷配低代码23 分钟前
低代码库存管理系统实战:实现库存预警、出入库自动化管理
运维·低代码·自动化·数字化·敏捷流程·数字化转型
浩星1 小时前
「Vue3 + Cesium 最佳实践」完整工程化方案
前端·javascript·vue.js
小李子呢02111 小时前
前端八股Vue(5)---v-if和v-show
前端·javascript·vue.js
YiuChauvin1 小时前
vue2中使用 AntV G6
javascript·vue.js
踩着两条虫2 小时前
目录:VTJ.PRO 在线应用开发平台技术揭秘
vue.js·低代码·ai编程
peak_chan3 小时前
通过vue-virtual-scroller封装虚拟滚动el-select
前端·javascript·vue.js
小李子呢02113 小时前
前端八股Vue(7)---computed计算属性和watch侦听器
前端·javascript·vue.js
Gofarlic_OMS3 小时前
Windchill的license合规使用报告自动化生成与审计追踪系统
大数据·运维·人工智能·云原生·自动化·云计算
Ruihong3 小时前
Vue3 转 React:组件透传 Attributes 与 useAttrs 使用详解|VuReact 实战
vue.js·react.js