天天看点

[jenkins]-pipeline同时发布多个项目并显示各个项目的流程耗时

需求: 想把服务里面的各个模块的构建时间显示出来。

jenkins pipeline如下

// Using git without checkout 
pipeline {
  agent any
  parameters {
    gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'Branch', sortMode: 'DESCENDING_SMART', type: 'PT_BRANCH' ,listSize: '10'
  }

  stages {
    stage('更新拉取最新代码') {
      steps {
        git branch: "${params.Branch}", url: '[email protected]:Web/view-report.git'
      }
    }
    stage('sonar扫描') {
      steps {
        sh "echo ${WORKSPACE} "
        sh "echo ${JOB_NAME} "
        //sh "echo ${deploy_step} "
        sh "echo ${env.JOB_NAME} "
        script
        {
            switch(SONAR_SCAN)
            {
                case "TRUE":
                    sh "echo 扫描"
                    sh "sh  /srv/deploy_scripts/do_sonar.sh ${WORKSPACE} ${JOB_NAME}"
                    // sh "echo \u001B[31m不扫描\u001B[0m !!!"
                default:
                    sh "echo \u001B[31m不扫描\u001B[0m !!!"
            
        }
        }
            }

      }
    stage('输出项目的参数') {
      steps {
        sh "echo ${WORKSPACE} "
        sh "echo ${Branch} "
        //sh "echo ${deploy_step} "
        sh "echo ${env.JOB_NAME} "
        script {
            wrap([$class: 'BuildUser']) {
            def deploylog="${BUILD_USER} use pipeline  '${JOB_NAME}(${BUILD_NUMBER})' "
            println deploylog
            buildName "#${BUILD_NUMBER}-^${BRANCH}^-${BUILD_USER}"
            HTTPD_LOCATION= sh(  returnStdout: true, script: 'git show -s  |grep -vE "Date" |grep -v "^$" |sed "s/^[ \\t]*//g"')
            buildDescription  "${HTTPD_LOCATION} ${BUILD_USER}此次部署项目: ${BUILD_ENV} " 
            }
        }
            }

      }
    stage('拆分子项目') { 
       steps {
            sh "echo $model"
             }
        }  
    }
}




def doOneProject(p_name){
   stage(p_name+"开始deploy") {
     echo "${p_name}"
   }
      stage(p_name+"deploying") {
      echo  "$p_name nnnpm runnnn ${BUILD_ENV}build}"
      //sh  "echo  \"$depoly_model npm run ${BUILD_ENV}build \" "
   }
   stage(p_name+"deploy result") {
      echo "结束了${p_name}"
   }
}

node {
   // 获取页面选择的内容
   def model="${model}"
   // 第一步显示出选择的
   stage('show model') {
     echo model
   }
   stage('run all') {
      for (p_name in model.tokenize(',')){
            doOneProject(p_name)
        }
   }   
}
           

主要代码

def doOneProject(p_name){
   stage(p_name+"开始deploy") {
     echo "${p_name}"
   }
      stage(p_name+"deploying") {
      echo  "$p_name nnnpm runnnn ${BUILD_ENV}build}"
      //sh  "echo  \"$depoly_model npm run ${BUILD_ENV}build \" "
   }
   stage(p_name+"deploy result") {
      echo "结束了${p_name}"
   }
}

node {
   // 获取页面选择的内容
   def model="${model}"
   // 第一步显示出选择的
   stage('show model') {
     echo model
   }
   stage('run all') {
      for (p_name in model.tokenize(',')){
            doOneProject(p_name)
        }
   } 
   
           

执行效果如下

[jenkins]-pipeline同时发布多个项目并显示各个项目的流程耗时
[jenkins]-pipeline同时发布多个项目并显示各个项目的流程耗时

参考

https://www.cnblogs.com/a393060727/p/12214548.html