1. 程式人生 > 實用技巧 >Jenkins pipline 使用模板

Jenkins pipline 使用模板

模板

/* pipline語言格式 */
pipeline {
    /* 在stage階段中指定執行節點 */
    agent none
    /* 通過pollSCM輪詢監測版本改動 */
    triggers { pollSCM('*/1 * * * *') }
    /* 建立環境變數 */
    environment {
        USER = "xxx"
        MAIL = "[email protected]"
        PROJECT = "GAME OVER"
        PREPARATION = "None"
        BUILD = "None"
        DEPLOY = "None"
        TEST = "None"
    
} /* 指定程式碼塊 */ stages { /* 指定主體階段:拉取程式碼 */ stage('Preparation') { /* 選擇節點標籤 */ agent { label 'node1' } /* 指定DSL命令封裝區域 */ steps { /* 拉取程式碼 */ git branch: 'xxxxxx', url: 'https://xxxx.git'
} /* 校驗條件:校驗拉取程式碼 */ post { /* 無論如何都執行 */ always { echo "The code pull action is completed" } /* 拉取失敗執行 */ failure { /* 使用純DSL語言編輯 */ script { echo "Failed to execute code pull action!!!" PREPARATION = "FAILED"
} } /* 拉取成功執行 */ success { /* 使用純DSL語言編輯 */ script { echo "Successfully execute code pull action!!!" PREPARATION = "SUCCESS" } } } } /* 指定主體階段:打包程式碼 */ stage('Build') { /* 選擇節點標籤 */ agent { label 'node1' } /* 指定DSL命令封裝區域 */ steps { echo "gradle build will go here." } /* 校驗條件:校驗打包 */ post { /* 無論如何都執行 */ always { echo "Build stage complete" } /* 打包失敗執行 */ failure { /* 使用純DSL語言編輯 */ script { echo "Build failed!!!" BUILD = "FAILED" } } /* 打包成功執行 */ success { /* 使用純DSL語言編輯 */ script { echo "Build succeeded!!!" BUILD = "SUCCESS" } } } } /* 指定主體階段:部署 */ stage('Deploy') { /* 選擇節點標籤 */ agent { label 'node1' } /* 指定DSL命令封裝區域 */ steps { echo "Deploy the project environment." } } /* 指定主體階段:測試 */ stage('Test') { /* 併發執行 */ parallel { /* 指定主體階段:測試組1 */ stage ('set1') { /* 選擇節點標籤:可選標籤組 */ agent { label 'node1' } /* 指定DSL命令封裝區域 */ steps { echo "Test project environment. node1" echo "Test project environment. node2" echo "Test project environment. node3" } } /* 指定主體階段:測試組2 */ stage ('set2') { /* 選擇節點標籤:可選標籤組 */ agent { label 'master' } /* 指定DSL命令封裝區域 */ steps { echo "Test project environment. master1" echo "Test project environment. master2" echo "Test project environment. master3" } } } } } /* 校驗條件:校驗整體釋出流程 */ post { /* 無論如何都執行 */ always { echo "All executed" } /* 釋出失敗執行 */ failure { /* 使用純DSL語言編輯 */ script { /* 傳送郵件 */ echo "Unfortunately failed!!!" mail to: "${MAIL}", subject: "專案:${PROJECT}釋出失敗", body: "Preparation=${PREPARATION}\nBUILD=${BUILD}\nDEPLOY=${DEPLOY}\nTEST=${TEST}" } } /* 釋出成功執行 */ success { /* 使用純DSL語言編輯 */ script { /* 傳送郵件 */ echo "Great success!!!" mail to: "${MAIL}", subject: "專案:${PROJECT}釋出成功", body: "Preparation=${PREPARATION}\nBUILD=${BUILD}\nDEPLOY=${DEPLOY}\nTEST=${TEST}" } } } }
pipeline {

    agent none
    
    triggers { pollSCM('*/1 * * * *') }
    
    environment {
        USER = "xxx"
        MAIL = "[email protected]"
        PROJECT = "GAME"
        PREPARATION = "None"
        BUILD = "None"
        DEPLOY = "None"
        TEST = "None"
    }

    stages {
        stage('Preparation') {
            agent {
                label 'node1'
            }
            steps {
                git branch: 'xxxxxxx', url: 'https://xxxxxxxxxxxxx.git'
            }
            post {
                always {
                    echo "The code pull action is completed"
                }
                failure {
                    script {
                        echo "Failed to execute code pull action!!!"
                        PREPARATION = "FAILED"
                    }
                }
                success {
                    script {
                        echo "Successfully execute code pull action!!!"
                        PREPARATION = "SUCCESS"
                    }
                }
            }
        }
        stage('Build') {
            agent {
                label 'node1'
            }
            steps {
                echo "gradle build will go here."
            }
            post {
                always {
                    echo "Build stage complete"
                }
                failure {
                    script {
                        echo "Build failed!!!"
                        BUILD = "FAILED"
                    }
                }
                success {
                    script {
                        echo "Build succeeded!!!"
                        BUILD = "SUCCESS"
                    }
                }
            }
        }
        stage('Deploy') {
            agent {
                label 'node1'
            }
            steps {
                echo "Deploy the project environment."
            }
        }
        stage('Test') {
            parallel {
                stage ('set1') {
                    agent {
                        label 'node1'
                    }
                    steps {
                        echo "Test project environment. node1"
                        echo "Test project environment. node2"
                        echo "Test project environment. node3"
                    }                    
                }
                stage ('set2') {
                    agent {
                        label 'master'
                    }
                    steps {
                        echo "Test project environment. master1"
                        echo "Test project environment. master2"
                        echo "Test project environment. master3"
                    }                    
                }                
            }

        }
    }
    post {
        always {
            echo "All executed"
        }
        failure {
            script {
                echo "Unfortunately failed!!!"
                mail to: "${MAIL}",
                subject: "專案:${PROJECT}釋出失敗",
                body: "Preparation=${PREPARATION}\nBUILD=${BUILD}\nDEPLOY=${DEPLOY}\nTEST=${TEST}"
            }
        }
        success {
            script {
                echo "Great success!!!"
                mail to: "${MAIL}",
                subject: "專案:${PROJECT}釋出成功",
                body: "Preparation=${PREPARATION}\nBUILD=${BUILD}\nDEPLOY=${DEPLOY}\nTEST=${TEST}"
            }
        }
    }
}
無註釋版本