1. 程式人生 > >Jenkins 踩坑記錄

Jenkins 踩坑記錄

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 服務,如果你已經開啟過,請點選下方的生成授權碼。
開啟 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 ,確保兩點:

  1. Gradle 路徑正確
  2. Gradle 版本正確
    正確的Gradle路徑

專案的 Gradle 版本資訊儲存在 ./gradle/wrapper/gradle-wrapper.properties 這個檔案中
專案的 Gradle 版本

如果你使用的是一臺全新的機器部署的 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} 來指向你的工作區:
工作區