Feb 22, 2017
搭建 Android 自动化构建平台
平台选择
根据团队的情况,我们选择 Jenkins + Git + Gogs + Gradle + Ubuntu
来搭建 Android 自动化构建平台。
需要的硬件资源:一台装有 Ubuntu 系统的主机。
环境配置
远程登录
通用 SSH 远程登录的方式进入装有 Ubuntu 系统的主机:
1 | $ ssh ubuntu@192.168.1.253 |
配置 Android SDK
下载 SDK
进入 Ubuntu 后,可选择下面其中一种方式下载 Android SDK,下载成功后将压缩包的内容解压到 android/sdk
目录下。
官网下载
1 | $ curl http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz --output android/sdk |
官网下载的 SDK,在运行过程中会报两个异常:
异常一
1 | Ionic build error : You have not accepted the license agreements of the following SDK components: [Android SDK Platform XX] |
原因分析
通过命令行下载的 Android SDK 没有接受了许可协议。
解决方法
手动添加 licenses:
1 | $ cd android/sdk |
异常二
1 | /var/lib/jenkins/.android/repositories.cfg could not be loaded |
原因分析
暂时找不出具体原因,应该也是通过命令行下载的 Android SDK 导致的。
解决方法
手动添加 repositories.cfg:
1 | $ echo -e "### User Sources for Android SDK Manager\ncount=0" > /var/lib/jenkins/.android/repositories.cfg |
第三方下载
1 | $ scp android-sdk_r24.4.1-linux.tar ubuntu@192.168.1.253:android/sdk |
配置环境变量
1 | $ sudo vim /etc/profile |
文件末尾添加以下内容并保存:
1 | export ANDROID_HOME=/home/jenkins/android/sdk |
让上面设置的环境变量立即生效:
1 | $ source /etc/profile |
配置 Git
1 | # 下载 Git |
配置 SVN
下载 SVN
1 | # 下载 SVN |
添加安全认证
SVN Publisher 插件的原理,其实是调用了 SVN 命令行来操作文件。虽然在「系统设置」中配置了 SVN 的账户密码,但是在构建 Job 时,还会出现安全认证失败的错误:
1 | SEVERE: *SVNForceImport Error: svn: E170001: Authentication required for '<http://svn-server:80> |
解决方法:
1 | # 切换当前用户到 jenkins |
配置 Gradle
下载 Gradle
为了方便,我直接从这里下载 gradle-2.14.1-all.zip,下载好之后,使用 scp
拷贝到 Ubuntu 中并解压:
1 | $ scp gradle-2.14.1-all.zip ubuntu@192.168.1.253:. |
1 | $ sudo unzip gradle-2.14.1-all.zip -d /opt/gradle/ |
当然你也可以选择从官网下载。
配置环境变量
1 | $ sudo vim /etc/profile |
文件末尾添加以下内容并保存:
1 | export GRADLE_HOME=/opt/gradle/gradle-2.14.1 |
让上面设置的环境变量立即生效:
1 | $ source /etc/profile |
检查是否安装成功:
1 | $ gradle -v |
Jenkins 环境配置
下载插件
在 Jenkins 的「管理插件」中下载 Git、Gogs、Gradle 和 SVN Publisher 插件。
系统设置
打开「系统管理」->「系统设置」,配置以下环境。
配置 Android SDK 环境变量
配置 SVN 账号密码
配置 JDK & Git & Gradle
打开「系统管理」->「Global Tool Configuration」,配置以下环境。
通过 which
查看可执行命令路径:
1 | $ which java |
注意,GRADLE_HOME 填 /opt/gradle/gradle-2.14.1
,不是 /opt/gradle/gradle-2.14.1/bin/gradle
: