Jenkins 踩坑記錄
Jenkins的安裝步驟我就不贅述了,有很多文章可以供參考,本文只講在安裝使用過程中遇到的一些問題及解決的方法。
1. 安裝
博主用於部署 Jenkins 的裝置是一臺 Debian8 主機,使用 ssh 連線。一開始我按照官方指南來進行安裝,但是在執行 sudo apt-get install jenkins
提示找不到這個安裝包,後來發現是軟體源的問題,官方指南上使用的是 https ,改成 deb http://pkg.jenkins.io/debian-stable binary/
就可以了。
我曾嘗試使用 deb 安裝包進行安裝,但是安裝完畢之後無法啟動服務,不知道什麼原因,要是哪位大佬知道還請不吝指教。
2. 使用QQ郵箱作為通知郵箱
如果你使用自己的QQ郵箱作為通知發件郵箱,首先你需要在你的 QQ 郵箱中,開啟 SMTP 服務,如果你已經開啟過,請點選下方的生成授權碼。
在 Jenkins 的郵箱通知中密碼位置填寫的是 QQ 郵箱的授權碼!
3. Gradle 錯誤
Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE
控制檯輸出這樣的錯誤資訊,說明 Gradle 在編譯打包的過程中出現錯誤,我們可以按照以下方法來進行排查:
3.1 Jenkins 配置錯誤
首先我們需要檢查 Gradle 配置是否存在問題,網上很多帖子上建議我們在任務配置中使用 Invoke Gradle
,如果使用這個選項的話一定要正確的配置 Gradle ,確保兩點:
- Gradle 路徑正確
- Gradle 版本正確
專案的 Gradle 版本資訊儲存在 ./gradle/wrapper/gradle-wrapper.properties
這個檔案中
如果你使用的是一臺全新的機器部署的 Jenkins ,在確保網路連線 OK 的情況下完全可以在全域性工具配置中使用 自動安裝
或者在任務配置中使用 Use Gradle Wrapper
3.2 專案配置出錯
在檢查確認我們的 Gradle 配置沒有問題後,我們繼續檢視控制檯的輸出,在瀏覽器中搜索 [ERROR]
、Exception
可以幫助我們快速定位問題。
問題一:無法下載指定版本的 kotlin
A problem occurred configuring root project 'xxxx'.
> Could not resolve all files for configuration ':classpath'.
> Could not download kotlin-compiler-runner.jar (org.jetbrains.kotlin:kotlin-compiler-runner:1.2.41)
> Could not get resource 'https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-runner/1.2.41/kotlin-compiler-runner-1.2.41.jar'.
> Connection reset
解決方法:修改 kotlin 版本
問題二:依賴版本錯誤、配置代理
> Could not resolve all dependencies for configuration ':app:_uerbPPortraitApkCopy'.
> Could not resolve com.android.support.constraint:constraint-layout:1.1.0.
Required by:
project :app
> Could not resolve com.android.support.constraint:constraint-layout:1.1.0.
> Could not get resource 'http://www.idescout.com/maven/repo/com/android/support/constraint/constraint-layout/1.1.0/constraint-layout-1.1.0.pom'.
> Could not GET 'http://www.idescout.com/maven/repo/com/android/support/constraint/constraint-layout/1.1.0/constraint-layout-1.1.0.pom'.
> Connect to 127.0.0.1:1080 [/127.0.0.1] failed: 拒絕連線 (Connection refused)
依賴了一個不存在的 constraint-layout 版本,修改成正確的版本即可。
由於我用於開發的電腦上配置了 SS 代理,所以在專案目錄下的 gradle.properties 檔案中配置使用代理:
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=1080
但是在 Jenkins 伺服器上並沒有 SS 代理,所以會出現這個錯誤,只需要將代理註釋即可。
Tips:其實,如果你用於部署 Jenkins 的主機上安裝了 AS,那麼你只要能在AS裡順利打包,在 Jenkins 上也能順利打包,而且 AS 也相對更容易定位錯誤發生的位置與原因。如果沒有安裝 AS,就要要善用 Ctrl + F 搜尋,來快速定位問題。
4. fir.im 外掛上傳路徑配置出錯
ERROR: Could not find the file specified by the pattern **/*.apk,**/*.ipa
Build step 'Upload to fir.im' marked build as failure
Sending e-mails to: [email protected]
Finished: FAILURE
如果你不知道你的專案在計算機中的絕對路徑,那麼請使用 ${WORKSPACE}
來指向你的工作區: