Jenkins 声明式管道部署仅适用于一个环境

时间:2021-04-04 17:32:39

标签: jenkins jenkins-pipeline jenkins-groovy jenkins-job-dsl jenkins-declarative-pipeline

以下是我的声明式管道代码,用于在获得 UAT 主管批准后将代码部署到 2 个环境。但 UAT 领导想批准部署一个环境。第二个环境他想在一天左右后(这可能是一天或几天。不可预测)。如何实现? .睡眠/超时在这里确实有效。两个单独的审批阶段可以做吗?

  @Library('xxxxxx') _
    import jenkins.model.*
    
    def userInput
    def builduserid
    def buildusername
    def MANIFESTFILE
    def SNAPSHOT
    def BUILD_TIMESTAMP
    def ucdDeployProcess
    
    
    def deplprocess = env.DEPLOYPROCESS.split(",").findAll { it }.collect { it.trim() }
    
    
    
    
    
    node("BDP") {
      wrap([$class: 'BuildUser']) {
        builduserid = env.BUILD_USER_ID
        buildusername = env.BUILD_USER
        
      }
                    
    
    }
    
    pipeline {
     agent { label 'BDP'}
      
         stages {
           
            stage ('Generate and Create Consolidated Snapshot') {
                 
                steps {
                 println "Cleaning workspace"
                    step([$class: 'WsCleanup'])
                dir('') {
                    git url: 'xxxxx'
                }
                dir('scripts') {
                    git url: 'xxxxx'
                }
                
                script {
                    def now = new Date()
                    BUILD_TIMESTAMP=now.format("yyyyMMddHHmm", TimeZone.getTimeZone('UTC'))
                    env.MANIFESTFILE="${ucdApplication}_${RELEASE}_Manifest.csv"
                    env.SNAPSHOT="${ucdApplication}_${RELEASE}_${BUILD_TIMESTAMP}" 
              
                    
                
                    sh(script: '$WORKSPACE/scripts/scripts/SelfServiceBaselineVerificationPrePareForSnapshot.ksh "$ucdApplication" "${COMPSNAPSHOT}" "$ucdApplication"/"${MANIFESTFILE}"')
                    def props = readProperties file: 'env.cfg' //readProperties is a step in Pipeline Utility Steps plugin
                    env.SnapshotContent = props.COMBINEDSNAPSHOTVERSION 
                    
                    
                  
    
                }
           }
           
             post {
             failure {
                emailext body: '''
                        <div>Hi Application Team</div>
                        <br>
                        <div>
                             
                             <br>
                             <br>
                             <h4>Failed Checks: </h4>
                             <div style="margin-left: 50px;">
                              ${BUILD_LOG_REGEX, regex="FAILED!", showTruncatedLines=false, escapeHtml=true, defaultValue="Nothing found, please check logs for other errors", matchedLineHtmlStyle="color:red;"}
                             </div>
                             <br>
                             <br>
                        
                        </div>
                        <br>
                        <div>Thank you</div>
                         ''',
                        mimeType: 'text/html',
                        to: "${builduserid}", 
                        subject: '$ucdApplication Component Baseline Verification FAILED'
                        
            }
           
        }
           
        }
        
         stage ('Create Consolidated Snapshot') { 
    
                steps { 
            
                ucdCreateCustomSnapshot()
                
                }
        }
            
            stage ('Approval Stage') {
        
                steps { 
                    script {
                    emailext body: """
                    Hi Approver,<br/><br/><br/>
                    
                    You have request from application team (${buildusername})  to deploy $ucdApplication application snapshot ${env.SNAPSHOT} to ${deploymentEnv} environment.<br/><br/><br/>
                    
                    Please approve or reject deployement request:&nbsp;<a href="${BUILD_URL}input">Click here</a>.<br/><br/><br/>
                    
                    Thanks,<br/><br/>
                    Happy Automation<br/>
                   """,    
                    mimeType: 'text/html',
                    subject: "Deployment Approval Request",
                    from: "${builduserid}",
                    to: "${approverRecipients}"
                    userInput = input id: 'userInput',
                                              message: 'Let\'s promote?.Please select to approve', 
                                              submitterParameter: 'submitter',
                                              submitter: approverRecipients,
                        parameters: [
                                 [$class: 'BooleanParameterDefinition', defaultValue: false, description: "Select this to deploy the code ${deploymentEnv} environment", name: deploymentEnv]]
                        if (userInput[deploymentEnv] == false ) {
                        currentBuild.result = 'ABORTED'
                        
                         }
                         
           } 
        }
            
    }
            
            stage("Deploy to Acceptance") {
                
                
                when {
                    expression { userInput[deploymentEnv] == true }
                }
                
                steps {
                script {
                            for (int i = 0; i < deplprocess.size(); i++) {
                       
                        env.ucdDeployProcess = deplprocess[i]
                        
                            
                        ucdCustomDeploySnapshot("${deploymentEnv}")
                            
                
                        }
                    
                
                
                }
            
                }
                
            }
             stage('Post Activities') {
                steps {
                    println "Cleaning workspace"
                    step([$class: 'WsCleanup'])
                    
                }
            }
            
        }
        
        
          post {
            
              
            failure {
                emailext body: """
                Hi Team,<br/><br/><br/>
                
                
                Code Deployment is failed for ${ucdApplication} application.<br/><br/><br/>
                
                <p><font size="5" color="red">Deployment Request is failed for ${ucdApplication} application with snapshot ${env.SNAPSHOT}!</font></p>
                
                <p>Check console output at &QUOT;<a href='${BUILD_URL}consoleText'>${JOB_NAME} [${BUILD_NUMBER}]</a>&QUOT;</p>
                
                
                Thanks,<br/>
                Happy Automation<br/><br/><br/>
                """, 
                        mimeType: 'text/html',
                        to: "${mailToRecipients},${builduserid}",
                        from: "${builduserid}",
                        subject: "FAILURE: Code Deployment is failed for '$ucdApplication' application with snapshot ${env.SNAPSHOT}"
            }
            success {
                emailext body: """
                Hi Team,<br/><br/><br/>
                
                <p><font size="5" color="green">Code Deployment is success for $ucdApplication application for ${deploymentEnv} environment with snapshot ${env.SNAPSHOT}!</font></p>
                
                
                Thanks,<br/>
                Happy Automation<br/><br/><br/>
                """, 
                        mimeType: 'text/html',
                        to: "${mailToRecipients},${builduserid}",
                        from: "${builduserid}",
                        subject: "SUCCESSFUL: Code Deployment is success for '$ucdApplication' application with snapshot ${env.SNAPSHOT}"
            }
            
          aborted {
                emailext body: """
                Hi Team,<br/><br/><br/>
                
                <p><font size="5" color="red">Deployment Request is rejected for ${ucdApplication} application by approver !</font></p>
                
                
                
                Thanks,<br/>
                Happy Automation<br/><br/><br/>
                """, 
                        mimeType: 'text/html',
                        to: "${mailToRecipients},${builduserid}",
                        from: "${builduserid}",
                        subject: "REJECTED: Code Deployment is rejected for $ucdApplication application with snapshot ${env.SNAPSHOT} by approver"
            }
            
        }
        
        enter code here
    
    }
    jenkins-pipeline

0 个答案:

没有答案
相关问题