使用Jenkins+Blue Ocean 持構建自動化部署之Android源碼打包、測試、郵件通知

什麼是BlueOcean?

BlueOcean重新考慮了Jenkins的用戶體驗。BlueOcean由Jenkins Pipeline設計,但仍然兼容自由式工作,減少了團隊成員的混亂,增加了清晰度。

  • 連續交付(CD)Pipeline的複雜可視化,允許快速和直觀地了解Pipeline的狀態。
  • Pipeline編輯器通過引導用戶直觀和可視化的過程創建Pipeline,使創建Pipeline平易近人。
  • 個性化,以適應團隊每個成員的角色需求。
  • 需要干預和/或出現問題時確定精度。BlueOcean顯示了Pipeline需要注意的地方,便於異常處理和提高生產率。
  • 用於分支和拉取請求的本地集成可以在GitHub和Bitbucket中與其他人進行程式碼協作時最大限度提高開發人員的生產力。

BlueOceans使用

依賴插件

該插件安裝完成後,在所要構建的任務中就會出現BlueOcean選擇,該項目是基於上篇部落格Pipeline項目,傳送門://www.cnblogs.com/feng0815/p/14287056.html


點擊打開 Blue Ocean

運行

實時展示進度

並行運行

以上的運行都是串列的,必須上個流程結束才能運行下個流程,這樣就會造成執行效率較低。
對於沒相互依賴的流程,我們可以進行並行運行
修改執行腳本

pipeline{
    agent {
        label 'master'
    }

    stages{
        stage('獲取源碼') {
            parallel {
                stage('Android程式源碼') {
                    steps {
                        sh 'mkdir -p AndroidSampleApp'
                        dir("AndroidSampleApp"){
                            git branch:'master', url:'//gitee.com/sfboy/AndroidSampleApp.git'
                        }
                    }
                }

                stage('自動測試程式源碼') {
                    steps {
                        sh 'mkdir -p iAppBVT_Python'
                        dir("iAppBVT_Python"){
                            git branch:'master', url:'//gitee.com/sfboy/iAppBVT_Python.git'
                        }
                    }
                }
            }
        }

        stage('Android編譯打包') {
            steps {
                sh '''
                    . ~/.bash_profile
                    cd AndroidSampleApp
                    sh gradlew clean assembleDebug
                '''
            }
        }

        stage('測試與發布') {
            parallel {
                stage('發布測試包') {
                    steps {
                        archiveArtifacts artifacts: 'AndroidSampleApp/app/build/outputs/apk/debug/app-debug.apk'
                    }
                }

                stage('自動化'){
                    stages{
                        stage('部署') {
                            steps {
                                sh '''
                                    . ~/.bash_profile
                                    cd AndroidSampleApp
                                    apk=app/build/outputs/apk/debug/app-debug.apk
                                    {
                                        #try: 卸載現有的Androidapp
                                        adb uninstall com.appsflyer.androidsampleapp
                                    } || {
                                        #catch
                                        echo 'no com.appsflyer.androidsampleapp package'
                                    }
                                    sleep 5

                                    #安裝Androidapp
                                    adb install $apk
                                '''
                            }
                        }

                        stage('自動測試') {
                            steps {
                                sh '''
                                    . ~/.bash_profile

                                    cd iAppBVT_Python

                                    #更新python依賴庫
                                    pip3 install -r requirements.txt

                                    #運行自動化測試
                                    pytest -sv test/bvt_test.py --tc-file iAppBVT_Python.json --tc-format json
                                '''
                            }
                        }
                    }
                }
            }
        }

        stage('通知郵件') {
            steps {
                emailext body: '$DEFAULT_CONTENT', recipientProviders: [[$class: 'RequesterRecipientProvider']], subject: '$DEFAULT_SUBJECT'
            }
        }
    }
}