1. 程式人生 > >使用Jenkins+Blue Ocean 持構建自動化部署之安卓原始碼打包、測試、郵件通知

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

#什麼是BlueOcean? BlueOcean重新考慮了Jenkins的使用者體驗。BlueOcean由Jenkins Pipeline設計,但仍然相容自由式工作,減少了團隊成員的混亂,增加了清晰度。 - 連續交付(CD)Pipeline的複雜視覺化,允許快速和直觀地瞭解Pipeline的狀態。 - Pipeline編輯器通過引導使用者直觀和視覺化的過程建立Pipeline,使建立Pipeline平易近人。 - 個性化,以適應團隊每個成員的角色需求。 - 需要干預和/或出現問題時確定精度。BlueOcean顯示了Pipeline需要注意的地方,便於異常處理和提高生產率。 - 用於分支和拉取請求的本地整合可以在GitHub和Bitbucket中與其他人進行程式碼協作時最大限度提高開發人員的生產力。 #BlueOceans使用 依賴外掛 ![](https://img2020.cnblogs.com/blog/1024536/202101/1024536-20210116235524528-1359397331.png) 該外掛安裝完成後,在所要構建的任務中就會出現BlueOcean選擇,該專案是基於上篇部落格Pipeline專案,傳送門:https://www.cnblogs.com/feng0815/p/14287056.html ![](https://img2020.cnblogs.com/blog/1024536/202101/1024536-20210117001801636-867588941.png) 點選開啟 Blue Ocean ![](https://img2020.cnblogs.com/blog/1024536/202101/1024536-20210117002036832-1673362092.png) 執行 ![](https://img2020.cnblogs.com/blog/1024536/202101/1024536-20210117002520118-1730843886.png) 實時展示進度 ![](https://img2020.cnblogs.com/blog/1024536/202101/1024536-20210117004040605-543721107.png) #並行執行 以上的執行都是序列的,必須上個流程結束才能執行下個流程,這樣就會造成執行效率較低。 對於沒相互依賴的流程,我們可以進行並行執行 修改執行指令碼 ``` pipeline{ agent { label 'master' } stages{ stage('獲取原始碼') { parallel { stage('安卓程式原始碼') { steps { sh 'mkdir -p AndroidSampleApp' dir("AndroidSampleApp"){ git branch:'master', url:'https://gitee.com/sfboy/AndroidSampleApp.git' } } } stage('自動測試程式原始碼') { steps { sh 'mkdir -p iAppBVT_Python' dir("iAppBVT_Python"){ git branch:'master', url:'https://gitee.com/sfboy/iAppBVT_Python.git' } } } } } stage('安卓編譯打包') { 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: 解除安裝現有的安卓app adb uninstall com.appsflyer.androidsampleapp } || { #catch echo 'no com.appsflyer.androidsampleapp package' } sleep 5 #安裝安卓app 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' } } } } ``` ![](https://img2020.cnblogs.com/blog/1024536/202101/1024536-20210117114648402-9781578