Jenkins之前端VUE自动化打包发布

1. 需求

实现开发前端VUE项目自动化打包发布,前端自己去做相应的更新,节省沟通时间

2.实现方式

Jenkins slave 使用pipeline调用cnpm命令去构建VUE项目

3.pipeline

node('slave-191') {
    stage('从SVN拉取代码') {
       checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', 
       excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, 
       credentialsId: '用户名和密码ID', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', 
       remote: 'svn项目链接']], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])
    }
    stage("Install") {
        sh '''export Node_Home=/usr/local/node-v12.13.1
        export PATH="$PATH:$Node_Home/bin"
        $Node_Home/bin/cnpm install'''
    }
    stage('NPM打包') {
        sh '''export Node_Home=/usr/local/node-v12.13.1
        export PATH="$PATH:$Node_Home/bin"
        $Node_Home/bin/npm run build'''
    }
    stage("更改API接口地址") {
        sh '''sed -i 's/ip1/ip2/g' ${WORKSPACE}/dist/static/config.js
        '''
    }
    stage("打包dist并归档") {
         sh '''tar -zcvf dist.tar.gz dist/
         '''
         archiveArtifacts artifacts: '*.tar.gz', fingerprint: true
    }
    stage('部署包') {
        sh '''
        cp -r ${WORKSPACE}/dist/ /usr/local/nginx/html/
        '''
    }
    stage('测试服务启动') {
        sh '''running_num=`/usr/bin/systemctl status nginx| grep running | wc -l`
        if [ $running_num -eq 1 ];then
            echo "deploy success"
        else
            echo "deploy failed"
            exit 1
        fi
        '''
    }
}

4.构建结果

image.png

猜你喜欢

转载自blog.51cto.com/12217124/2477108