pipeline流水线语法格式

def call() {
    pipeline {
        agent any
        
        options {
            buildDiscarder logRotator(daysToKeepStr: '5', numToKeepStr: '5')
            gitLabConnection 'gitlab-10.60.30.180'
            sidebarLinks([
                [displayName: 'workspace', iconFileName: 'folder.png', urlName: "http://10.88.44.64:8080/view/pipeline/job/$JOB_NAME/$BUILD_ID/execution/node/4/ws/"]
            ])
        }
        tools {
            jdk 'jdk 8'
            nodejs 'node10.15'
        }
        stages {
            stage("拉代码"){
                steps{
                    sh '''
                        echo $appconfig
                    '''
                    script {
                        SUB_GROUP = sh (script:"echo $JOB_NAME |awk -F'+' '{print \$(NF-1)}'", returnStdout: true).trim()
                        PROJ_NAME_frontend = sh (script:"echo $JOB_NAME |awk -F'+' '{print \$NF}'", returnStdout: true).trim()
                        URL_GIT_frontend = sh (script:"echo http://10.63.34.190/dzrj_project/${SUB_GROUP}/${PROJ_NAME_frontend}.git", returnStdout: true).trim()
                    }
                    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '4f71b5cd-9430-492d-8112-b008ae2776ab', url: "${URL_GIT_frontend}"]]])
                }
            }
            stage("sonar检查"){
                steps{
                    script {
                        PROJ_ID = sh (script:"echo $JOB_NAME |awk -F'-' '{print \$1}'", returnStdout: true).trim()
                        SONAR_KEY = sh (script:"echo ${PROJ_ID}-${SUB_GROUP}", returnStdout: true).trim()
                    }
                    withSonarQubeEnv('10.153.61.80') {
                    // some block
                    sh "SonarScanner -Dsonar.host.url=http://10.153.61.80:9000 -Dsonar.sourceEncoding=UTF-8 -Dsonar.sources=src/ -Dsonar.login=63429399c559fd273dea3ce3e515e09cad9f8bbb -Dsonar.projectVersion=v1.0 -Dsonar.java.binaries=/ -Dsonar.projectKey=${SONAR_KEY} -Dsonar.java.source=1.8 -Dsonar.projectName=${JOB_NAME} -Dsonar.projectBaseDir=/var/lib/jenkins/workspace/${JOB_NAME}"
                    }
                }
            }
            stage('质量门限') {
                steps {
                    sleep(20)
                    timeout(time: 1, unit: 'MINUTES') {
                        waitForQualityGate abortPipeline: true
                    }
                }
            }
            stage("前端打包"){
                steps{
                    script{
                        env.imageTag = sh (script: 'git rev-parse --short HEAD ${GIT_COMMIT}', returnStdout: true).trim()
                    }
                    sh "echo $env.imageTag"
                    sh '''
                        echo $PATH 
                        node -v 
                        npm -v 
                        cd ${WORKSPACE}
                        
                        if [ -e node_modules/.bin/vue-cli-service ]
                            then
                            chmod 777 node_modules/.bin/vue-cli-service
                            else
                            echo "未上传node_modules或前端框架为老版本"
                        fi
                        
                        echo $appconfig
                        npm cache clean -f
                        
                        node deploy $appconfig
                    '''
                }
            }
        }
    }
}
def call() {
    pipeline {
        agent any
        
        options {
            buildDiscarder logRotator(daysToKeepStr: '5', numToKeepStr: '5')
            gitLabConnection 'gitlab'
            sidebarLinks([
                [displayName: 'workspace', iconFileName: 'folder.png', urlName: "http://10.88.44.64:8080/view/pipeline/job/$JOB_NAME/$BUILD_ID/execution/node/4/ws/"]
            ])
        }
        tools {
            jdk 'jdk 8'
            nodejs 'node10.15'
        }
        triggers {
            pollSCM ignorePostCommitHooks: true, scmpoll_spec: '*/1 * * * *'
        }
        stages {
            stage("拉代码"){
                steps{
                    script {
                        SUB_GROUP = sh (script:"echo $JOB_NAME |awk -F'+' '{print \$(NF-2)}'", returnStdout: true).trim()
                        PROJ_NAME_backend = sh (script:"echo $JOB_NAME |awk -F'+' '{print \$(NF-1)}'", returnStdout: true).trim()
                        PROJ_NAME_frontend = sh (script:"echo $JOB_NAME |awk -F'+' '{print \$NF}'", returnStdout: true).trim()
                        URL_GIT_backend = sh (script:"echo http://10.63.34.190/dzrj_project/${SUB_GROUP}/${PROJ_NAME_backend}.git", returnStdout: true).trim()
                        URL_GIT_frontend = sh (script:"echo http://10.63.34.190/dzrj_project/${SUB_GROUP}/${PROJ_NAME_frontend}.git", returnStdout: true).trim()
                    }

                    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'front']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '4f71b5cd-9430-492d-8112-b008ae2776ab', url: "${URL_GIT_frontend}"]]])
                    
                    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'backend']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '4f71b5cd-9430-492d-8112-b008ae2776ab', url: "${URL_GIT_backend}"]]])
                }
            }
            stage("sonar检查"){
                steps{
                    script {
                        PROJ_ID = sh (script:"echo $JOB_NAME |awk -F'-' '{print \$1}'", returnStdout: true).trim()
                        SONAR_KEY = sh (script:"echo ${PROJ_ID}-${SUB_GROUP}", returnStdout: true).trim()
                    }
                    withSonarQubeEnv('10.153.61.80') {
                    // some block
                    sh "SonarScanner -Dsonar.host.url=http://10.153.61.80:9000 -Dsonar.sourceEncoding=UTF-8 -Dsonar.sources=backend/src/ -Dsonar.login=63429399c559fd273dea3ce3e515e09cad9f8bbb -Dsonar.projectVersion=v1.0 -Dsonar.java.binaries=/ -Dsonar.projectKey=${SONAR_KEY} -Dsonar.java.source=1.8 -Dsonar.projectName=${JOB_NAME} -Dsonar.projectBaseDir=/var/lib/jenkins/workspace/${JOB_NAME}"
                    }
                }
            }
            stage('质量门限') {
                steps {
                    sleep(20)
                    timeout(time: 1, unit: 'MINUTES') {
                        waitForQualityGate abortPipeline: true
                    }
                }
            }
            stage("前端打包"){
                steps{
                    script{
                        env.imageTag = sh (script: 'cd front;git rev-parse --short HEAD ${GIT_COMMIT}', returnStdout: true).trim()
                    }
                    sh "echo $env.imageTag"
                    sh '''
                        if [ -e front/node_modules/.bin/vue-cli-service ]
                            then
                            chmod 777 front/node_modules/.bin/vue-cli-service
                            else
                            echo "未上传node_modules或前端框架为老版本"
                        fi
                        cd front
                        echo $PWD
                        npm cache clean -f
                        npm rebuild node-sass
                        npm run build
                        echo ${WORKSPACE}
                        echo $PWD
                        rm -rf ${WORKSPACE}/backend/src/main/resources/static
                        cp -R ${WORKSPACE}/front/dist/ ${WORKSPACE}/backend/src/main/resources/static/
                        mkdir -pv ${WORKSPACE}/backend/src/main/resources/static/$env.imageTag
                    '''
                }
            }
            stage("后端打包"){
                steps{
                    sh "rm -rf ${WORKSPACE}/backend/build"
                    sh "rm -rf ${WORKSPACE}/backend/*.zip"
                    sh "cd ${workspace}/backend ; gradle-4.0 build"
                }
            }
            stage("重命名jar包"){
                steps{
                    script{
                        env.imageTag = sh (script: 'cd backend ; git rev-parse --short HEAD ${GIT_COMMIT}', returnStdout: true).trim()
                    }
                    sh "echo $imageTag"
                    sh "printenv"
                    sh "echo ${WORKSPACE}"
                    
                    sh '''
                        mv ${WORKSPACE}/backend/build/libs/*.jar ${WORKSPACE}/backend/build/libs/`basename ${WORKSPACE}/backend/build/libs/*.jar .jar`-$imageTag.jar
                    '''
                }
            }
            stage("gradle_publishProjoectPkg"){
                steps{
                    sh "cd ${workspace}/backend ; gradle-4.0 publishProjoectPkg"
                }
            }
            stage("重命名dist.zip"){
                steps{
                    script{
                        env.imageTag = sh (script: 'cd backend ; git rev-parse --short HEAD ${GIT_COMMIT}', returnStdout: true).trim()
                    }
                    sh "echo $imageTag"
                    sh '''
                        mv ${WORKSPACE}/backend/dist.zip ${WORKSPACE}/backend/$imageTag.zip
                    '''
                }
            }
        }
    }
}
def call() {
    pipeline {
        agent any
        
        options {
            buildDiscarder logRotator(daysToKeepStr: '5', numToKeepStr: '5')
            gitLabConnection 'gitlab'
            sidebarLinks([
                [displayName: 'workspace', iconFileName: 'folder.png', urlName: "http://10.88.44.64:8080/view/pipeline/job/$JOB_NAME/$BUILD_ID/execution/node/4/ws/"]
            ])
        }
        tools {
            jdk 'jdk 8'
        }
        triggers {
            pollSCM ignorePostCommitHooks: true, scmpoll_spec: '*/1 * * * *'
        }
        stages {
            stage("拉代码"){
                steps{
                    script {
                        SUB_GROUP = sh (script:"echo $JOB_NAME |awk -F'+' '{print \$(NF-1)}'", returnStdout: true).trim()
                        PROJ_NAME = sh (script:"echo $JOB_NAME |awk -F'+' '{print \$NF}'", returnStdout: true).trim()
                        URL_GIT = sh (script:"echo http://10.63.34.190/dzrj_project/${SUB_GROUP}/${PROJ_NAME}.git", returnStdout: true).trim()
                    }
                    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '4f71b5cd-9430-492d-8112-b008ae2776ab', url: "${URL_GIT}"]]])
                    
                    //triggers {
                    //    pollSCM ignorePostCommitHooks: true, scmpoll_spec: '*/1 * * * *'
                    //}
                }
            }
            stage("sonar检查"){
                steps{
                    script {
                        PROJ_ID = sh (script:"echo $JOB_NAME |awk -F'-' '{print \$1}'", returnStdout: true).trim()
                        SONAR_KEY = sh (script:"echo ${PROJ_ID}-${SUB_GROUP}", returnStdout: true).trim()
                    }
                    withSonarQubeEnv('10.153.61.80') {
                    // some block
                    sh "SonarScanner -Dsonar.host.url=http://10.153.61.80:9000 -Dsonar.sourceEncoding=UTF-8 -Dsonar.sources=src/ -Dsonar.login=63429399c559fd273dea3ce3e515e09cad9f8bbb -Dsonar.projectVersion=v1.0 -Dsonar.java.binaries=/ -Dsonar.projectKey=${SONAR_KEY} -Dsonar.java.source=1.8 -Dsonar.projectName=${JOB_NAME} -Dsonar.projectBaseDir=/var/lib/jenkins/workspace/${JOB_NAME}"
                    }
                }
            }
            stage('质量门限') {
                steps {
                    sleep(20)
                    timeout(time: 1, unit: 'MINUTES') {
                        waitForQualityGate abortPipeline: true
                    }
                }
            }
            stage("后端打包"){
                steps{
                    sh "rm -rf ${WORKSPACE}/build"
                    sh "rm -rf ${WORKSPACE}/*.zip"
                    sh "gradle-4.0 build"
                }
            }
            stage("重命名jar包"){
                steps{
                    script{
                        env.imageTag = sh (script: 'git rev-parse --short HEAD ${GIT_COMMIT}', returnStdout: true).trim()
                    }
                    sh "echo $imageTag"
                    sh "printenv"
                    sh "echo $PWD"
                    
                    sh "mv ${WORKSPACE}/build/libs/*.jar ${WORKSPACE}/build/libs/`basename ${WORKSPACE}/build/libs/*.jar .jar`-${imageTag}.jar"
                }
            }
            stage("gradle_zipProjectPkg"){
                steps{
                    sh "gradle-4.0 zipProjectPkg"
                }
            }
            stage("重命名dist.zip"){
                steps{
                    script{
                        env.imageTag = sh (script: 'git rev-parse --short HEAD ${GIT_COMMIT}', returnStdout: true).trim()
                    }
                    sh "echo $imageTag"
                    sh "mv ${WORKSPACE}/dist.zip ${WORKSPACE}/${imageTag}.zip"
                }
            }
        }
    }
}

 

posted @ 2021-04-28 23:25  漫步sch  阅读(929)  评论(0编辑  收藏  举报