取捨,只是選擇當下最合適的策略。
CI/CD 降低了很多工程師在例行事務的時間,但難免有些流程中,其實拿出來獨立使用手動操作會更好。就像前幾篇所說的,要有備案。備案除了在其他裝置重新建立 Jenkins 環境,還有一種就是把重要的流程寫成腳本。拉掉 CI/CD 流程,仍然可以獨立執行。
若是在 CI/CD Pipeline 腳本當中,在 Android 發版流程簡化示意如下:
pipeline {
stage('Env Setup') {
'sh ./gradlew clean'
'sh ./gradlew build'
}
stage('Generate APK') {
'sh ./gradlew testDebug'
}
stage('Upload APK') {
'sh ./gradlew appDistributionUploadTestDebug'
}
}
如果之後如果想要自己本機發版的話,就要從 Jenkinsfile 當中把每個流程自行複制,然後一個執令結束之後,再複制下一個指令。對工程師來說自行發版會發生的痛點其實蠻多的,所以如果再將上述 Pipeline 的內容寫在 Shell Script 當中的話,其實就是下方的內容:
./gradlew clean
./gradlew build
./gradlew assasmble testDebug
./gradlew appDistributionUploadTestDebug
而將 Pipeline 腳本再進行改寫,示意如下:
pipeline {
stage('Generate APK') {
'sh ReleaseDebugApk.sh'
}
}
當 stage 只剩下一個之後,在查看這個 Job 的流程只會有一個流程,相較前一個會透露更多的流程。這是一種取捨,在 Jenkins 上會看到比較少的流程流動,但是可以兼顧手動以及自動化。