pipeline admin-core

pipeline {
  //agent any
  agent none
   environment {
    HARBOR_CREDS = credentials('harbor-admin-passwd')
    //BUILD_BAK = $[ ${BUILD_ID} -2 ]
    //GIT_TAG = sh(returnStdout: true,script: 'git describe --tags --always').trim()
    }
  options {
    //日志会有时间,删除隐形checkout scm语句,禁止并行,流水线超时设置1h
    timestamps()
    //shkipDefaultCheckout()
    //disableConcurrentBuilds()
    timeout(time: 1, unit: 'HOURS')
  }
  parameters{
    string(name: 'BRANCH', defaultValue: 'master', description: '仓库分支')
    //string(name: 'HARBOR_HOST', defaultValue: '106.13.xxx.xx:31007', description: 'harbor仓库地址')
    //string(name: 'DOCKER_IMAGE', defaultValue: 'xx/java-demo', description: 'docker镜像名')
  }

  stages{ 
    stage('拉取代码'){
      agent { node { label 'master'} }
      steps{
        timeout (time:20, unit:"MINUTES"){
          git branch: '${BRANCH}',credentialsId: 'gitlab-root-passwd', url: 'http://106.13.xx.xx:31001/xx/xx-admin-service.git'
        }
      }
    }
    stage('静态扫描'){
      agent { node { label 'master'} }
      steps {
        echo "Code Scanning"
      } 
    }
    stage('代码打包'){
      agent { node { label 'master'} }
      steps {
        //sh '[ ! -d ${WORKSPACE}/deploy ] && mkdir ${WORKSPACE}/deploy'
        sh 'rm -rf ${WORKSPACE}/deploy/*.gz'
        sh 'tar -zcvf ${WORKSPACE}/deploy/${JOB_NAME}_${BUILD_ID}.tar.gz --exclude=".gitattributes" --exclude=".git" --exclude=".gitignore" --exclude="*.rar" --exclude=deploy ./*'
      } 
    }

    stage('代码检测'){
      agent { node { label 'master'} }
      steps {
        timeout (time:20, unit:"MINUTES"){
          sh "echo 代码质量检测"
        }
      }
    }
    stage('代码上传'){
      agent { node { label 'master'} }
      steps {
        sh 'scp -P 31000 ${WORKSPACE}/deploy/*.tar.gz root@172.16.16.5:/data/jenkins'
      }
    }
    stage('代码部署'){
      agent { node { label 'master'} }
      steps {
        sh "ssh -p 31000 172.16.16.5 'tar -zxf /data/jenkins/${JOB_NAME}_${BUILD_ID}.tar.gz -C /data/wwwroot/dev/xx-admin/'"
      }
    }
    stage('镜像制作'){
      agent { node { label 'master'} }
      steps{
        timeout (time:20, unit:"MINUTES"){
          sh "ssh -p 31000 172.16.16.5 'cd /data/wwwroot/dev/xx-admin/ \
          && find ./ -type f -name  Dockerfile -exec cp {} . \\; \
          && docker  build -t ${JOB_NAME}_${BUILD_ID} . \
          && docker rmi -f ${JOB_NAME}_\$[ ${BUILD_ID} - 2 ] '"
        }
      }
    } 
    stage('启动镜像'){
      agent { node { label 'master'} }
      steps {
        sh "ssh -p 31000 172.16.16.5 'docker rm -f xx-admin \
        && docker run -d --restart=always --name rocilife-admin -p 80:80 ${JOB_NAME}_${BUILD_ID}'"
      }
    }
  }
  post {
    always {
      script{
        println("always")
      }
    }
    success {
      script {
        currentBuild.description = "构建成功!"
      }
    }
    failure {
      script{
        currentBuild.description = "构建失败!"
      }
    }
    aborted {
      script {
        currentBuild.description  ="构建取消!"
      }
    }
  }
}

 

posted @ 2020-07-29 16:29  sunmmi  阅读(88)  评论(0)    收藏  举报