个人Github:github.com/BzCoderhtml
GitLab-CI的相关语法:fennay.github.io/gitlab-ci-c…linux
欢迎各位留言讨论android
为了优化工做流程,解放开发人员双手,不成天被【帮我打一个测最近的包】这种琐碎的事儿打乱工做的节奏,这两天就研究了下有关于Android持续集成的东西,特此记录。咱们项目是存放在GitHub的私有仓库,如今有三个持续集成自动化打包的方案:c++
本着薅资本主义羊毛的原则,咱们来介绍下这个方案。git
简单地了解了工具,接下来咱们就开始持续集成之旅。 程序员
首先要将GitHub上的代码转移一份到GitLab上,而且保持同步。万幸的是,这最关键的一部,贴心的GitLab已经搞定了。 【登陆Gitlab】【New project】 【CI/CD for external repo】【GitHub】,只要通过受权,GitLab就能够获取到你GitHub账号下全部的仓库。选择【Connect】后便可同步你的GitHub项目到GitLab。 github
配置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
根据项目实际SDK版本状况修改。api
image: openjdk:8-jdk
variables:
ANDROID_COMPILE_SDK: "28"
ANDROID_BUILD_TOOLS: "28.0.2"
ANDROID_SDK_TOOLS: "4333796"
复制代码
此处根据须要更改打包命令,示例中打的是Debug包。
./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
复制代码
固然你也能够配置其余参数来知足你的需求。
参数 | 类型 | 说明 |
---|---|---|
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 | (选填) 版本更新描述,请传空字符串,或不传。 |
curl "钉钉WebHook地址" -XPOST -H 'content-type:application/json' -d '钉钉消息json'
复制代码
钉钉WebHook地址能够在【群聊】【添加机器人】【自定义】中获取。
{
"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直接设置通知钉钉:
蒲公英应用下载地址,能够在后台查看。
only:
- master
复制代码
参数 | 说明 |
---|---|
only | 定义一列git分支,进行集成 |
except | 定义一列git分支,不进行集成 |
##6.上传artifacts文件路径
- app/build/outputs/apk/debug/app-debug.apk
复制代码
能够在Gitlab中下载打出来的包。
到此流程所有结束,只要你提交代码到Github,Gitlab-CI就会帮你自动打包,你能够在【GitLab】【对应工程】【CI/CD】中查看打包的进程。