背景
很多公司都会有自己的APP,很多打包操作都是安卓的开发人员在自己的本机上完成的,很多都是口口相传,没有一套通用的打包平台,在工作的交接过程中非常麻烦,需要经常去配置环境。
环境部署
大部分的公司的做法,都是通过jenkins去实现android的apk的包的构建,然后,将包上传到CDN上
安装需要的插件
- git
- gradle
- Git Parameter
打包依赖
- gradle
- android sdk
- jdk
配置依赖
mkdir /data/android -p
#创建android sdk路径
mkdir /data/android/sdk && cd /data/android/sdk
wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
unzip sdk-tools-linux-4333796.zip
在jenkins设置ANDROID_HOME(系统设置中)
#通过sdk tool来安装android所依赖的版本
tools/bin/sdkmanager "platform-tools" "platforms;android-26"
#设置gradle的路径
mkdir /data/android/gradle && cd /data/android/gradle
wget https://downloads.gradle.org/distributions/gradle-4.6-all.zip
unzip gradle-4.6-all.zip
在jenkins中设置gradle的路径(全局工具配置)
#设置jdk的路径
mkdir /data/android/jdk && cd /data/android/jdk
tar -xf jdk-8u65-linux-x64.tar.gz
在jenkins中设置jdk的路径(全局工具配置)
注意:
将以上目录的权限都划给jenkins
chown -R jenkins:jenkins /data/android/
jenkins会自动设置好环境变量
$ su - jenkins
$ env | grep PATH
PATH=/var/lib/jenkins/.pyenv/plugins/pyenv-virtualenv/shims:/var/lib/jenkins/.pyenv/shims:/var/lib/jenkins/.pyenv/bin:/data/android/jdk/jdk1.8.0_65/bin:/data/android/jdk/jdk1.8.0_65/jre/bin:/data/android/sdk/tools:/data/android/sdk/platform-tools:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/go/bin:/root/.nvm/v8.11.2/bin/npm:/root/.nvm/v8.11.2/bin/node
配置项目
可以通过参数化构建,来让用户选择对应的分支进行构建
建议设置一个用户用来拉取git上所有的代码
进行构建操作,填写shell
构建
选择对应的分支,构建
上传到cdn
这里没有做进一步的操作,可以将打好的包,上传到阿里云的oss上,然后,将包下载的域名CNAME到oss对应的域名上,可以在构建中,将每次的包放到对应的build id下,然后,通过python的sdk,上传到oss上。我们当前线上的静态文件(css/js/image)都是这么操作的,确认可行。
建议:
- 一定要保证依赖的工具,jenkins有权限执行
- 一定不要用root进入到workspace手动build,如果手动build了,一定要清除.xx的目录,保证项目的权限为jenkins