jenkin 编写流水线之前端详细步骤

前端流水线

pipeline {
    agent { label 'build' }        #通过agent的标签去识别编译节点

	environment                     #定义变量
	{
	    // 新流水线需确认修改的有1、gitlab地址 2、npm run build 3、 agent { label 'local-eduAppTest' }
		jobBaseName = "${env.JOB_BASE_NAME}"          #流水线的名称,这个名称的变量是创建流水线的名称
		gitUrl = "http://171.93.112.44:9999/chenweiqiang/smart-building-web-front.git"     #仓库的地址
		packCommand = "npm run build:prod"   #前端编译的命令
		deployNode = "local-eduAppTest"      #部署的节点
		nginxHtmlDir = "/opt/nginx/html"      #前端部署的工作目录
		webDir = "smart-building-web-front-test"    #项目的目录名称
	}

    tools {
        nodejs 'node-v24.11.1'   #定义node.js的版本
    }

    stages {
        stage('Clean Workspace') {
            steps {
                // 清除工作空间中的所有文件和目录
                deleteDir()
            }
        }
        
        stage('Checkout') {
            steps {
                // 使用 Git 拉取代码
                git credentialsId: 'luyang', branch: "${params.branch}", url: "${gitUrl}"   #拉取仓库以及通过变量选取分支
            }
        }
        
        stage('Build') {                              #编译前端包
            steps {
                sh '''
                which node
                npm config set registry=https://registry.npmjs.org
                npm cache clean --force
                npm install --legacy-peer-deps
                ${packCommand}
                tar -zcvf dist.tar.gz dist
                ls -l
                '''
                // set +e

                // 保存构建文件到 stash,供后续阶段使用
                stash includes: 'dist.tar.gz', name: "arc_${env.JOB_BASE_NAME}"                #将编译好的文件打包成dist.tar.gz包
            }
        }
        
        stage('Deploy') {
            agent { label "${deployNode}" }       #选择节点
            steps {
                // 清除工作空间中的所有文件和目录
                deleteDir()
                // 从 stash 中恢复构建文件
                unstash "arc_${env.JOB_BASE_NAME}"
                
                sh '''
                ls -l
                nginx_html_dir="${nginxHtmlDir}"
                web_dir="${webDir}"
                now_time=$(date '+%Y%m%d%H%M%S')
                
                mkdir -p ${nginx_html_dir}/versions/${web_dir}/${now_time}
                tar -xf dist.tar.gz
                mv dist ${nginx_html_dir}/versions/${web_dir}/${now_time}/
                cd ${nginx_html_dir}
                ln -sfT versions/${web_dir}/${now_time}/dist/ ${web_dir}

                if [ $(ls -r versions/${web_dir} |sed 1,3d |wc -l) -eq 0 ];then
                 :
                else
                 ls -r versions/${web_dir} |sed 1,3d |xargs -i rm -rf versions/${web_dir}/{}
                fi
                '''
            }
        }
    }
}

posted @ 2026-02-05 17:06  中午吃麻辣烫  阅读(2)  评论(0)    收藏  举报