# 安卓組持續集成文檔
隨著測試階段的到來,打包成為了開發人員的日常工作之一。而安卓打包也十分耗費時間,特別是在 Windows 平臺下。為了將開發人員從無盡的打包需求中拯救出來,同時為了日后更多的持續集成工作,是非常有必要做持續集成的。
本文檔會從項目采用的工作流出發,說明目前的集成方案的理由,再對具體的配置和使用作出一定的教程。
## 1. 目前采用的工作流
目前項目采用的是標準的`gitflow`工作流,流程圖如下:

* **master** : 主分支,線上代碼
* **develop** : 單一的開發分支,其他分支要從此分支checkout,其他分支的修改最終也要合并到此分支。不要直接在 develop 分支上開發,也不能直接push,而是通過`merge request`來合并分支。
* **feature** : 特性分支,版本開發分支,從**develop**分支checkout。根據迭代的版本或功能的不同,可以存在多條不同的 feature 分支,例如 feature-1.0, feature-dreamBuild4 等待。功能測試通過后合并到 develop 分支。
* **release** : 版本發布分支。從**develop**分支檢出。當 develop 分支的代碼滿足下一版本的需求的時候,檢出 release 分支并進行整合測試,回歸測試,產品驗收等流程。產品發布后,合并到**master**分支和**develop**分支
* hotfix : 略。
## 2. 持續集成方案和通知
基于如上工作流,我們決定對 develop, feature, release 分支進行自動打包,策略如下:
* develop : 每天早上8.30檢查是否有分支合并,如果有則重新打包;
* feature : 特性開發分支,生命周期在產品開發階段,主要提供給測試人員。每天早上9點,下午2點,傍晚6點會檢查代碼更改,如果有更新則自動打包;
* release : 版本發布分支,生命周期主要在產品驗收階段,提供給測試、產品等各方。每次提交代碼都會進行打包。
每次打包會有對應釘釘消息通知,如果需要關注打包信息,請搜索加入[遠智教育Android自動打包信息群](https://qr.dingtalk.com/action/joingroup?code=v1,k1,vvFPkyM4W8rN0b7G1SFbpcaQWQ6JXRCNUIKs+k204Ts=&_dt_no_comment=1&origin=11)。
打包后apk會上傳到[https://fir.im/tx91](https://fir.im/tx91),需要安裝的請自取,注意查看更新信息:

## 3. 手動打包使用教程
雖然已經配置了自動打包,但有時候存在切換接口地址等需求,也可以手動在 jenkins 進行:
1. 登錄[jenkins](jenkins.yzwill.cn),打開`android`選項卡:

2. 找到你要進行打包的分支任務,點擊進入任務詳情,點擊`Build with Parameters`:

3. 在打開的配置頁面填寫要打包的服務器地址,默認是89,然后點擊"開始構建":

4. 等待釘釘通知,然后獲取安裝包即可。
## 4. 配置教程
在進入新的項目階段時,需要配置對應的自動化打包任務,對應的任務策略請看上面**第2點**。操作步驟如下:
1. 新建一個“自由風格的軟件項目”,名字的命名規則如下:
* android-feature_xxx : 特性分支,開發階段。`xxx`為當前迭代版本或者功能模塊,例如 feature_login
* android-release_x.x.x : 版本發布分支,整合測試、驗收階段。`x.x.x`為當前版本號
2. 在新建頁底部填寫`copy from`,此處有自動補全。選擇與你當前配置分支一致的任務,然后點"OK":

3. 對配置的以下信息進行修改:
* **General** : 根據實際模塊或版本修改項目描述:

* **源碼管理** : 更改打包分支:

* **然后保存即可** :

其他配置不需要更改,項目即會按照設定的策略去自動打包。