Jenkins、gitlab、webhook實現Android持續集成

1、安裝下載jenkins

進入jenkins 的官網 https://jenkins.io/ , 根據你搭建平臺的不同,我們這裏用 windows 平臺做演示。

 

然後在瀏覽器中訪問 : http://localhost:8080/, 你將會看到如下界面 , 代表 Jenkins 已經下載完成了,下一步安裝 Jenkins.

 

 

2、填寫 Jenkins 超級管理員密碼

在上圖的輸入框內要輸入超級管理員權限的密碼,這個 密碼在紅色路徑的文件裏 ,輸入密碼後,點擊 continue , 如下圖所示:

 

3、Jenkins 插件安裝和超級管理員配置

填寫完密碼後,將會看到插件安裝界面

 

我們選擇第一項,安裝默認Jenkins插件。安裝插件過程如下圖所示:

等所有的插件都安裝完成,我們將會看到用戶名設置界面。

這個界面你有兩個選擇可以操作,

選擇一:直接點擊 Continue as Admin 安裝,默認此時的超級管理員爲 admin .

選擇二:輸入用戶名,密碼,確認密碼,全名,電子郵件地址。然後點擊 Save and Finish . 注意你輸入的用戶名就是 Jenkins 的超級管理員。需要注意的是,上面的每一項都需要填寫,否則點擊 Save and Finish 按鈕沒有效果。

等上面的步驟都操作完畢,你將會看到如下界面,代表 Jenkins 的插件安裝和超級管理員已經配置好了。

4、Jenkins 全局配置

Jenkins 全局配置
JDK 和 Gradle 配置

由於Android 是基於 java 的,我們需要配置 JDK;由於我們用 Gradle 構建Android 項目,我們需要設置 Gradle 的環境 。

在 系統管理 –> 全局工具配置

Android SDK 配置

系統管理 –> 系統設置 – 全局屬性

在 Environment variables 裏面增加一個鍵值對. 
鍵:ANDROID_HOME 
值:SDK 路徑

5、創建任務

點擊創建一個新的任務,如下圖所示:

6、項目配置

把以前構建過的過時歷史數據自動清除掉,保留最近更新的天數和個數。如下圖:

這樣配置後,就只保留最近3天內的5個構建歷史,避免一直保留沾滿磁盤。

1、選擇源碼管理工具,Git 或者 Subversion . 下面我們的演示選擇 Git. 
2、填寫 Git 倉庫地址 
3、選擇 Git 證書憑證, 如果沒有創建過證書,顯示 none , 可以點擊右邊的 Add 按鈕添加一個證書憑證。 
4、添加證書憑證,添加的方法詳見下面的圖。 
5、選擇 Git 倉庫的分支 
6、源碼瀏覽器,Git 有很多管理器,我們這裏選擇自動就好了。

添加證書
從 Git 上拉取代碼,有兩種方式:用戶名+密碼、SSH . 根據自己的需要選擇。

填寫 Git 倉庫的用戶名和密碼

1、代表配置的項目 
2、構建模塊 
3、選擇 Gradle 構建工具的版本號,可以選擇默認構建版本號,也可以選擇自己自定的版本號。 
4、填寫 Gradle 構建任務

  • 打 release 包
  • 解釋:
  • 打 debug 包
  • 解釋:
  • 同時打 debug 包和 release 包

7、構建觸發器

在上面部分我們發起構建的命令是點擊 立即構建 的按鈕,Jenkins 裏面有構建觸發器的方式,提供遠程構建任務。

  • 1、觸發遠程構建 (例如,使用腳本):填入身份驗證令牌,可以隨便填寫,我們這裏填入 123456 , 填寫完成後,在輸入框的下方有提醒
  • Use the following URL to trigger build remotely: JENKINS_URL/job/APP%20TEST/build?token=TOKEN_NAME 或者 /buildWithParameters?token=TOKEN_NAME
    Optionally append &cause=Cause+Text to provide text that will be included in the recorded build cause.
  • 根據提示,我們自瀏覽器中訪問地址: http://127.0.0.1:9999/jenkins/job/AppTest/build?token=123456 , 這樣就可以觸發構建任務。
  • 2、Build after other projects are built : 在其他任務結束後,開始本次構建任務。
  • 示例:在 test app項目構建成功後,開始本次構建任務。

①Trigger only if build is stable:其他項目構建成功 
②Trigger even if the build is unstable:其他項目不穩定 
③Trigger even if the build fails:其他項目構建失敗

Build periodically:週期進行構建(它不關心源碼是否發生變化)
日程表:

示例:

注意

1、在日程表中,# 可以代表註釋,但是需要單獨寫一行。

2、官方日程表語法:https://en.wikipedia.org/wiki/Cron#CRON_expression

3、日程表的語法字段遵循cron的語法(略有不同)。 具體來說,每行由5個由TAB或空格分隔的字段組成:MINUTE HOUR DAY MONTH WEEK

4、時間順序和: MINUTE (0-59), HOUR (0-23), DAY (1-31), MONTH (1-12), DAY OF THE WEEK (0-7)

其他的日程表:

GitHub hook trigger for GITScm polling:hookplugin 檢測到源碼的 push 操作觸發構建 , 感覺Poll SCM 更方便些,如果提交頻繁,則這個觸發就會頻繁,看業務需要設置。

Poll SCM : 定時檢查源碼變更(根據SCM軟件的版本號),如果有更新就 checkout 最新code下來,然後執行構建動作。

日程表示例:

示例:

 

8、構建後操作

構建結果發佈到 fir 平臺
fir 是國內提供測試應用極速發佈,應用崩潰實時分析、用戶反饋收集等一系列開發測試效率工具服務,幫助開發者將更多精力放在產品的開發與應用的優化上。

官網: https://fir.im/

登錄後,在 fir 官網的個人資料中, 可以找到 API Token , 這個 token 我們在後面會用到。

fir.im Jenkins 插件使用方法: http://blog.fir.im/jenkins/

下載插件

Jenkins 構建完成後,生成的 apk 文件,我們通過插件的方式上傳到 fir . 通過上面的連接,我們下載 Jenkins 的 fir 插件到本地。

安裝插件

系統管理 –> 插件管理 –> 高級 –> 上傳插件

使用插件

配置 –> 構建後操作 –> 增加構建後操作步驟 –> Upload to fir.im

填寫 API Token

 

構建結果

通過日誌看到上傳 fir 成功。

9、執行構建任務

點擊立即構建按鈕,開始執行構建任務。

- 【1】、點擊立即構建,開始執行構建任務

- 【2】、進度條,表示正在構建的項目

- 【3】、藍色的圖標表示構建成功

- 【4】、紅色的圖標表示構建失敗

點擊正在構建的條目,可以進入正在構建的信息。

狀態集:構建人用戶名、構建git 節點

變更記錄:

控制檯輸出:構建過程中的輸出控制檯,會輸出構建過程中的詳細信息,這個功能很重要,如果構建失敗,可以從這裏找到錯誤的原因。

編輯編譯信息:每次構建任務的時候,構建名字是數字形式疊加,這裏可以自定義構建任務的名字。

Git Build Data:本次構建 Git 倉庫的相關信息。

10、生成二維碼


這裏必須用到Python這個陌生的語言。第一次接觸python,雖只用到冰山一角,但也體會到了他插件化集成的便捷性

step.1 準備工作:

爲tomcat 配置文件下載路徑
進入tomcat安裝目錄→conf→server.xml文件,在Host節點中添加如下配置。

<Context reloadable="true" docBase="E://JenkinsApk" crossContext="true" path="/JenkinsApk"/>

下載安裝Python和pip,依次配置環境變量。
Python的安裝及pip插件工具的安裝,直接參照此博客即可:python 安裝步驟博客

安裝圖片支持插件Pillow和二維碼生成庫qrcode
Pillow 就是Python Imaging Library(PIL)的進化版。Pillow由於更新版本的問題,使用普通插件安裝命令可能會失敗。在安裝Pillow之前,確保pip能正常使用,最好是先隨便找一個包安裝一下。然後命令行輸入 pip list 檢查是否安裝成功。

安裝Pillow
命令1:pip install Pillow (失敗)
命令2:pip install -I --no-cache-dir -v Pillow (成功)
至於爲什麼失敗,解釋頗多也不想深究。暫且都記上多試試。
安裝qrcode 命令:pip install myqr

qrcode這個庫還是初略看一下比較好,在README文件中有詳細的安裝使用說明。
下載中途如果失敗, 重新輸入命令執行即可,網絡不穩定容易出現超時,他沒有自動重連機制。
安裝完成後,在Jenkins中配置Python全局變量。這樣我們才能使用Python的腳本命令,入下圖。
進入 →系統管理 →系統設置 找到 Enviroment variables

step.2 生成二維碼

進入項目→構建→增加構建步驟,選擇Execute windows batch command,填寫qrcode生成二維碼的命令

上述命令中使用到的$參數,是通過動態拼接指定對於的apk文件。
生成一個jenkins_app.png的二維碼圖片,輸出路徑爲 -d之後的路徑。
此時點擊保存,再重新構建一次,在配置目錄下應該能找到生成的二維碼圖片了。

step.3 展示二維碼
找到構建後操作 → 增加構建後操作步驟→Set build description
使用html標籤引用我們的二維碼圖片和apk文件即可,當然這裏我們依然需要動態拼接地址,來鎖定目標。

完整代碼:

  1. ![](http://localhost:8080/JenkinsApk/${BUILD_TIME}/jenkins_app.png) <br>

  2. <a href='http://localhost:8080/JenkinsApk/${BUILD_TIME}/${APPNAME}-v${APP_VERSION}-${PRODUCT_FLAVORS}-${BUILD_TYPE}.apk'>點擊下載-V${APP_VERSION}.apk</a>

OK!大功告成,保存再次打包。就能得到文章開頭我們貼圖的效果了。
PS:對於二維碼和apk的存放路徑,需要預先定義好。爲了清晰這裏使用時間參數BUILD_TIME 作爲文件夾區分,二維碼圖片則只需要用同一名稱。
所以apk下載地址:xx/download/2017-02-10-15-25/apk參數拼接名稱.apk
二維碼圖片地址:xx/download/2017-02-10-15-25/jenkins_app.png

 

11、構建結果

構建結果通知釘釘

釘釘,阿里巴巴出品,專爲中國企業打造的免費智能移動辦公平臺。

  • 第一步:創建釘釘羣聊機器人

 

選擇自定義機器人

點擊添加

輸入機器人的名字

複製 Hook 地址

  • 第二步:Jenkins 後臺添加釘釘插件

  • 第三步:添加構建後操作

  • 第四步:添加釘釘插件參數

好了這一塊就完成了,由於我的另一篇博客寫好了如何進行持續集成,參考我的另一篇博客繼續完成接下來的內容吧jenkins結合gitlab webhook提交代碼後本地做持續集成

 

完:在附帶一個插件鏈接,很多插件都可以從這裏面找

https://updates.jenkins-ci.org/download/plugins/

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章