在使用Jenkins
配置Android專案
的時候遇到了一些坑,總結下:
##沒有gradle.properties檔案
- 錯誤資訊:
example/bulid.gradle
FAILURE: Build failed with an exception.- Where:
Build file '/Users/Shared/Jenkins/Home/jobs/android- crop/workspace/build.gradle' line: 12 - What went wrong:
A problem occurred evaluating root project 'workspace'.
Could not find property 'VERSION' on root project 'workspace'.
- Where:
- 錯誤分析:使用
Android Studio
開啟一個專案的時候預設會生成gradle.properties
,在使用Jenkins
整合的時候使用的是gradle assembleRelease
命令,不會自動生成gradle.properties
的,就出現了上面的錯誤。 解決方案:在專案根目錄新增一個
gradle.properties
:VERSION=1.0.1 VERSION_CODE=1 signing.keyId= signing.secretKeyRingFile= signing.password= sonatypeUsername=jdamcd sonatypePassword=複製程式碼
##無法使用.ssh中的private key
- 錯誤資訊:使用
clone
專案的時候無法使用.ssh
中的private key
。 - 錯誤分析:安裝
Jenkins
的時候會新建了一個使用者(jenkins),jenkins使用者沒有許可權讀取~/.ssh
的許可權。 - 解決方案:在Jenkins的介面中使用
Add credentials
手動輸入private key的內容:
##構建專案許可權不足
錯誤資訊:
- What went wrong:
java.io.IOException: Permission denied
Permission denied
- What went wrong:
錯誤分析:造成這個問題的原因是因為給予
jenkins
使用者的許可權不足,無法操作jenkins
目錄。解決方案: 給
jenkins使用者
足夠的許可權sudo chown -R jenkins /var/lib/jenkins/複製程式碼
##沒有設定sdk的目錄
- 錯誤資訊:無法構建Android專案,找不到sdk位置
錯誤分析:
local.properties
同樣的也是由Android Studio
中自動根據環境變數生成的,在使用gradle build
的時候也是無法自動建立的。解決方案:在專案根目錄定義一個
local.properties
並指定sdk.dir
為Android SDK的位置。## This file is automatically generated by Android Studio. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. # # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. #Fri Dec 11 16:57:33 CST 2015 sdk.dir=/var/lib/jenkins/tools/android-sdk複製程式碼
##請使用外掛Jenkins
提供各種強大的外掛比如:
Gradle plugin
:可以配置管理本地的gradle。Git Parameter Plug-In
:可以幫助在Jenkins中更好的管理git。Android Emulator Plugin
:可以管理Android sdk,也可以幫助整合Android專案。Jenkins
的有各種強大的外掛,如果某個配置或者某個工具不知道在Jenkins
中使用,可以嘗試找下它的外掛。