iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0

今天會繼續介紹如何使用jenkins來進行包版或運行測試

那麼jenkins是怎麼進行包版的呢?

讓我們先來回顧一下昨天的console output
https://ithelp.ithome.com.tw/upload/images/20191010/20120279ilWU2iF4TB.png

可以看到運作時其實是有點類似開terminal執行cmd

極端一點來說 jenkins只是方便你整合用的而已
如果你要做到自動化 甚至可以全部用cmd寫 然後包成一個bat檔去運行
不過有工具能用還是乖乖用工具吧
jenkins還有很多插件可以搭配 能讓你減少很多時間

那麼android專案使用的gradle其實就是一套自動化建置工具
接下來先回去android studio 開啟專案

https://github.com/mars1120/jetpackMvvmDemo

如果你使用本文提供的範例的話 記得加上
credentials.properties(path:rootProject)

NEWS_API_KEY="YourAPIKey"

如果不知道key怎麼申請
請參閱 Day23 call API & tests

運行專案後
點選下方的Terminal
https://ithelp.ithome.com.tw/upload/images/20191010/20120279TtKX98xDQX.png

輸入

gradlew build

成功後
回去專案的root/app底下
會發現生成build資料夾
https://ithelp.ithome.com.tw/upload/images/20191010/20120279ltZLqGGNFR.png

接著輸入

Terminal

gradlew clean

會將生成的建置檔案(build相關的)清除

gradle可以輸入的語法 可以打開專案右邊的gradle查看
https://ithelp.ithome.com.tw/upload/images/20191010/201202799Wjou8IFT6.png
除了內建與自動自動生成的語法以外 還能自己在gradle裡面新增

例如說你可以寫個行為是建置完成以後將apk移動到特定位置之類的

運行測試的語法

Local unit test

./gradlew test
./gradlew :<moduleName>:test<variantName>UnitTest --tests <pattern>

Instrumented test

./gradlew connectedAndroidTest
./gradlew :<moduleName>:connected<variantName>AndroidTest -Pandroid.testInstrumentationRunnerArguments.class=<package.TestClassName>

了解更多 點我1 點我2

回到專案 運行單元測試

Terminal

gradlew test

然後你可以在
.../jetpackMvvmDemo/app/build/reports/tests/testDebugUnitTest/index.html
找到測試報告
https://ithelp.ithome.com.tw/upload/images/20191011/20120279s73KO6oOds.png

接著 確保目前運行的裝置只有一台模擬器或實機

Terminal

gradlew connectedAndroidTest

接著就會看到測試運行在裝置上了
那接著把這些語法整合到jenkins上

再回到jenkins之前 先去查android_SDK路徑並且把他記起來
等等要去jenkins設定路徑

https://ithelp.ithome.com.tw/upload/images/20191011/20120279eEA0Zs8Nwx.png

https://ithelp.ithome.com.tw/upload/images/20191011/20120279OSgv5xx3SD.png

回到jenkins

點 管理jenkins -> 設定系統 ->新增全域變數
https://ithelp.ithome.com.tw/upload/images/20191011/20120279klnb9ytfQY.png
ANDROID_SDK_ROOT
path:(範例)E:\as\Android\sdk
JAVA_HOME
path:(範例)C:\Program Files\Java\jdk1.8.0_111

然後儲存

接著打開 工作-ironman_2020_android(job name) -> 組態
往下移動到建置
https://ithelp.ithome.com.tw/upload/images/20191011/20120279yt1orwSnAc.png
點選新增建置 -> invoke Gradle script

設定
https://ithelp.ithome.com.tw/upload/images/20191011/20120279Q7loGMyI55.png
圖片中有勾選的選項記得勾選

tasks:

clean
assembleDebug
assembleDebugAndroidTest
test
connectedAndroidTest

另外 如果你的Gradle找不到或是說你在內網無法下載的話
你可以去 管理jenkins -> Global Tool Configuration手動新增不同版本的gradle

設定完成之後 按馬上建置

然後就可以點console output看運行的情況
https://ithelp.ithome.com.tw/upload/images/20191011/20120279UOntWuhvcA.png

https://ithelp.ithome.com.tw/upload/images/20191011/20120279wgbO48nXAi.png
如果fail也可以根據output的訊息做調整

至此最基本的自動化流程就告一段落了
之後可以根據需求再串接更多功能
例如track git branch 有變動時自動包版
或是每日自動建置 or 建置完成後透過webhook發訊息到特定頻道等等行為


上一篇
Day25 jenkins安裝與設定
下一篇
Day27 jenkins整合Firebase TestLab -1
系列文
Android × CI/CD 如何用基本的MVVM專案實現 CI/CD 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言