超簡單配置Android持續集成自動化打包流程 - GitHub+GitLab-CI+蒲公英+釘釘

個人Github:github.com/BzCoderhtml

GitLab-CI的相關語法:fennay.github.io/gitlab-ci-c…linux

歡迎各位留言討論android

場景

爲了優化工做流程,解放開發人員雙手,不成天被【幫我打一個測最近的包】這種瑣碎的事兒打亂工做的節奏,這兩天就研究了下有關於Android持續集成的東西,特此記錄。咱們項目是存放在GitHub的私有倉庫,如今有三個持續集成自動化打包的方案:c++

  • Travis CI:Github親兒子,它對於開源庫是無償使用,可是針對GitHub私有庫的持續集成是收費的。
  • Jenkins:功能強大,使用靈活,可是Jenkins配置的複雜度和部署成本都相對比較高,有學習成本,可是一個不錯的方案。
  • GitLab CI:很是簡單徹底免費,且徹底不須要配置額外服務器資源的方案,支持私有倉庫,學習成本低。

本着薅資本主義羊毛的原則,咱們來介紹下這個方案。git

工具集

使用工具

  • GitHub:世界最大代碼託管平臺,世界最大程序員交友平臺。
  • GitLab:不少功能都比GitHub好,可是惋惜用的人沒有GitHub多,可是不少公司都把他私有化部署。
  • GitLab-CI:配合GitLab平臺的持續繼承平臺。
  • 蒲公英:國內知名APP內測分發平臺。
  • 釘釘:阿里出品辦公軟件,咱們主要使用機器人功能進行相關人員通知。

整體流程

簡單地瞭解了工具,接下來咱們就開始持續集成之旅。 程序員

整體流程

同步代碼到GitLab

首先要將GitHub上的代碼轉移一份到GitLab上,而且保持同步。萬幸的是,這最關鍵的一部,貼心的GitLab已經搞定了。 【登陸Gitlab】【New project】 【CI/CD for external repo】【GitHub】,只要通過受權,GitLab就能夠獲取到你GitHub賬號下全部的倉庫。選擇【Connect】後便可同步你的GitHub項目到GitLab。 github

配置GitLab-CI

配置GitLab-CI其實十分簡單,咱們只要將GitLab-CI的持續集成腳本文件.gitlab-ci.yml加入到咱們工程的根目錄便可,若是你是想即拿即用,那麼你只須要複製粘帖如下代碼,替換相關Key值與SDK,JDK版本便可。web

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "28"
  ANDROID_BUILD_TOOLS: "28.0.2"
  ANDROID_SDK_TOOLS:   "4333796"

before_script:
  - apt-get --quiet update --yes
  - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
  - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOLS}.zip
  - unzip -d android-sdk-linux android-sdk.zip
  - echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
  - echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
  - echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
  - export ANDROID_HOME=$PWD/android-sdk-linux
  - export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
  - chmod +x ./gradlew
  # temporarily disable checking for EPIPE error and use yes to accept all licenses
  - set +o pipefail
  - yes | android-sdk-linux/tools/bin/sdkmanager --licenses
  - set -o pipefail

stages:
  - build

assembleDebug:
  stage: build
  only:
    - master
  script:
    - ./gradlew assembleDebug
    - curl -F "file=@app/build/outputs/apk/debug/app-debug.apk" -F "uKey=蒲公英uKey" -F "_api_key=蒲公英api_key" https://qiniu-storage.pgyer.com/apiv1/app/upload
    - curl "釘釘WebHook地址" -XPOST -H 'content-type:application/json' -d '{"msgtype":"text","text":{"content":"@135xxxxxxx@135xxxxxxx@135xxxxxxx【xxxx】打包完成,下載地址:https://www.pgyer.com/xxxx"},"at":{"atMobiles":["135xxxxxxx","135xxxxxxx","135xxxxxxx"],"isAtAll":false}}'
  artifacts:
    paths:
      - app/build/outputs/apk/debug/app-debug.apk
複製代碼

配置腳本

這邊地解釋下經常使用的幾處配置項的含義,畢竟咱們的要求是快速簡單配置,過多的就不贅述了。json

1.配置JDK版本,SDK版本

根據項目實際SDK版本狀況修改。api

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "28"
  ANDROID_BUILD_TOOLS: "28.0.2"
  ANDROID_SDK_TOOLS:   "4333796"
複製代碼

2.打包指令

此處根據須要更改打包命令,示例中打的是Debug包。

./gradlew assembleDebug
複製代碼

3.上傳蒲公英

第一個參數爲你打包後文件的路徑,「@」符號不能丟。第二個第三個參數能夠在蒲公英官網查詢。

curl -F "file=@app/build/outputs/apk/debug/app-debug.apk" -F "uKey=蒲公英uKey"
 -F "_api_key=蒲公英api_key" https://qiniu-storage.pgyer.com/apiv1/app/upload
複製代碼

固然你也能夠配置其餘參數來知足你的需求。

參數 類型 說明
uKey String (必填) 用戶Key
_api_key String (必填) API Key
file File (必填) 須要上傳的ipa或者apk文件
installType Integer (選填)應用安裝方式,值爲(1,2,3)。1:公開,2:密碼安裝,3:邀請安裝。默認爲1公開
password String (選填) 設置App安裝密碼,若是不想設置密碼,請傳空字符串,或不傳。
updateDescription String (選填) 版本更新描述,請傳空字符串,或不傳。

4.通知釘釘

curl "釘釘WebHook地址" -XPOST -H 'content-type:application/json' -d '釘釘消息json'
複製代碼

釘釘WebHook地址能夠在【羣聊】【添加機器人】【自定義】中獲取。

釘釘webhook地址
釘釘消息中的Json能夠參考如下格式

{
  "msgtype": "text",
  "text": {
    "content": "@135xxxxxxx@135xxxxxxx@135xxxxxxx【xxxx】打包完成,下載地址:https://www.pgyer.com/xxxx"
  },
  "at": {
    "atMobiles": [
      "135xxxxxxx",
      "135xxxxxxx",
      "135xxxxxxx"
    ],
    "isAtAll": false
  }
}
複製代碼
參數 參數類型 必須 說明
msgtype String 消息類型,此時固定爲:text
content String 消息內容
atMobiles Array 被@人的手機號(在content裏添加@人的手機號)
isAtAll bool @全部人時:true,不然爲:false

@後面爲你所須要通知的同事的釘釘綁定的手機號碼,更多用法能夠參考釘釘機器人文檔

固然你也能夠在蒲公英後臺中設置webhook直接設置通知釘釘:

蒲公英設置webhook

釘釘顯示效果

蒲公英應用下載地址,能夠在後臺查看。

蒲公英後臺
##5.指定分支 咱們並不須要每次提交都觸發持續集成。因此咱們須要指定觸發持續集成的分支。

only:
    - master
複製代碼
參數 說明
only 定義一列git分支,進行集成
except 定義一列git分支,不進行集成

##6.上傳artifacts文件路徑

- app/build/outputs/apk/debug/app-debug.apk
複製代碼

能夠在Gitlab中下載打出來的包。

GitLab下載包

注意事項

到此流程所有結束,只要你提交代碼到Github,Gitlab-CI就會幫你自動打包,你能夠在【GitLab】【對應工程】【CI/CD】中查看打包的進程。

查看進程
打包成功後就會發送通知到你的釘釘,並同步至蒲公英,固然你也能夠到GitLab中從附件中下載安裝包,若是你的微信綁定了蒲公英,在你的微信裏也會有相應的提示。
釘釘提醒
微信提示
可是有一點要注意。因爲在GitlLab上打包,它並不會緩存倉庫,因此每次都須要從新下載工程中全部被依賴的庫。從圖中也能夠看到,一箇中型工程的集成時間在25-30分鐘左右。打包速度異常緩慢,但已經足夠知足平常的一些需求。固然若是能利用Jenkins把環境部署在本地將是一個更好的選擇。
相關文章
相關標籤/搜索