pipeline 流水線:when 的使用


pipeline 流水線:when 例子說明

  • 本次例子實現以下功能:
    1, 能夠參數化選擇發布的環境
    2, pipeline腳本中利用參數進行階段選擇
    3, 可以選擇分支
    4, 可以選擇部署到開發環境或者提交到測試
    5, 提交測試需要填寫提測版本號(提測必須填寫)
    6, 提交測試時,備注配置變化(無變化可以不填寫)

添加需要的構建參數

1. 分支參數

2.部署動作參數, Deploy_to_development_environment:部署到開發環境;Summit_the_test:提交鏡像給測試。這兩個值會在pipeline腳本里提供給when進行判斷。

3.提測版本


歷史版本:

4.提測配置備注

5.pipeline腳本


腳本說明

pipeline {
    agent any
    environment {
       BUILD_USER = ""
    }

    tools {
        maven 'maven'
        jdk   'Oracle_jdk8'
    }
    // 分支選擇,注意BRANCH,與構建參數一致
    parameters {
        gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH'
        
    }
    stages {
        stage('准備'){
            steps{
                script{
                   //pipeline中的when不能直接調用參數化構建里面的參數。需要進行變量賦值。
                   ACTION = "${dev_or_test}"
                }
            }
        }
        stage('拉代碼') {
            //when進行判斷,若變量ACTION的值是Deploy_to_development_environment,則執行這個步驟。
            //Deploy_to_development_environment是參數化構建里面配置好的。
             when {
              equals expected: 'Deploy_to_development_environment', 
              actual: ACTION
            }
		    steps {
			    echo '開始拉取代碼.....'
				git branch: "${params.BRANCH}", credentialsId: '7XXXXXXXXf0-1de413f5ea29', url: 'http://gitlab.vonedao.com/XXXXXX.git'
			}
       }
        stage('編譯打包鏡像') {
             when {
              equals expected: 'Deploy_to_development_environment', 
              actual: ACTION
            }
		    steps {
		        
		        echo '開始執行編譯打包操作.......'
                sh 'mvn clean install -Dmaven.test.skip=true -U'
                echo 'Build Docker Image'
                sh 'mvn -f ./$JOB_NAME/pom.xml  docker:stop docker:remove docker:build docker:push'
			}
       }
        stage('部署到開發環境') {
             when {
              equals expected: 'Deploy_to_development_environment', 
              actual: ACTION
            }
		    steps {
		        echo '開始發布開發環境 .......'
                //執行自己編寫的shell腳本,進行部署動作
                sh '/var/jenkins_home/piplineshell/deploy_dev.sh'
			}
       }
        stage('提交到測試') {
            //when進行判斷,若變量ACTION的值是Summit_the_test,則執行這個步驟。
            //Summit_the_test是參數化構建里面配置好的。
             when {
              equals expected: 'Summit_the_test', 
              actual: ACTION
            }
		    steps {
		        script {
                    //提測版本號不能為空 
                    if (env.NewVersion) {
                        //提測版本號不能與歷史提測版本號重復 
                        sh '/var/jenkins_home/piplineshell/check_version_.sh'
                        //利用Jenkins的workspace下面已經拉下git的項目(開發已經部署驗證通過了),進行版本號修改,然后編譯打包提交給測試。
                        sh 'mvn versions:set -DnewVersion=${NewVersion} -DupdateMatchingVersions=false'
                        sh 'mvn -f ./${JOB_NAME}/pom.xml versions:update-child-modules'
                        sh 'mvn -f ./${JOB_NAME}/pom.xml clean install -Dmaven.test.skip=true -U '
                        sh 'mvn -f ./$JOB_NAME/pom.xml docker:stop docker:remove docker:build docker:push'
                        sh 'mvn -f ./$JOB_NAME/pom.xml versions:revert'
                        //該腳本作用是將本次的新版本號寫入對應文件/var/jenkins_home/piplineshell/version_tag/cs-auth
                        //並且修改yaml文件中的鏡像版本號,將最新yaml文件同步到測試環境。
                        sh '/var/jenkins_home/piplineshell/version_tag.sh'

                    }
                else {
                    echo 'ERROR : 沒有填寫提測版本號'  
                    sh 'exit 1'
                    }
                }
            // Get build user profile via User Build Vrs plugin
            // https://wiki.jenkins.io/display/JENKINS/Build+User+Vars+Plugin
            //企業微信消息通知 
            wrap([$class: 'BuildUser']) {
                script {
                       BUILD_USER = "${env.BUILD_USER}"
                       sh '/var/jenkins_home/piplineshell/sendmessage.sh'
                           
                    }
                }
	  }
       }
    }
}

6.執行效果

選擇部署動作是部署到開發環境:選擇分支,選擇Deploy_to_development_environment

點擊構建:

選擇部署動作是提交到測試環境:選擇Summit_the_test,填寫版本號,填寫變動的配置



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM