夏眠鱼

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
2
3
$ cd android/sdk
$ mkdir licenses
$ echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > "licenses/android-sdk-license"
异常二
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
2
export ANDROID_HOME=/home/jenkins/android/sdk
export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platfom-tools:$PATH

让上面设置的环境变量立即生效:

1
$ source /etc/profile

配置 Git

1
2
3
4
5
6
# 下载 Git
$ sudo apt-get install git

# 检查是否安装成功
$ git --version
git version 2.11.0

配置 SVN

下载 SVN

1
2
3
4
5
6
# 下载 SVN
$ sudo apt-get install svn

# 检查是否安装成功
$ svn --version
svn,版本 1.6.17 (r1128011)

添加安全认证

SVN Publisher 插件的原理,其实是调用了 SVN 命令行来操作文件。虽然在「系统设置」中配置了 SVN 的账户密码,但是在构建 Job 时,还会出现安全认证失败的错误:

1
SEVERE: *SVNForceImport Error: svn: E170001: Authentication required for '<http://svn-server:80> 

解决方法:

1
2
3
4
5
6
7
8
9
# 切换当前用户到 jenkins
$ su jenkins

# 删除已经存在的 .subversion
$ rm -fr ~/.subversion

# 该操作的目的是保存 svn 的用户名和密码。
# 输入完密码后,会询问你是否需要保存密码,输入 yes 以保存 SVN 密码
$ svn checkout --username <username> <svn-repo-url>

配置 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
2
export GRADLE_HOME=/opt/gradle/gradle-2.14.1
export PATH=$GRADLE_HOME/bin:$PATH

让上面设置的环境变量立即生效:

1
$ source /etc/profile

检查是否安装成功:

1
2
3
4
5
6
7
8
9
10
11
12
$ gradle -v
------------------------------------------------------------
Gradle 2.14.1
------------------------------------------------------------

Build time: 2016-07-18 06:38:37 UTC
Revision: d9e2113d9fb05a5caabba61798bdb8dfdca83719

Groovy: 2.4.4
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_121 (Oracle Corporation 25.121-b13)
OS: Linux 3.5.0-47-generic amd64

Jenkins 环境配置

下载插件

在 Jenkins 的「管理插件」中下载 Git、Gogs、Gradle 和 SVN Publisher 插件。

系统设置

打开「系统管理」->「系统设置」,配置以下环境。

配置 Android SDK 环境变量

jenkins-system-setting1.png

配置 SVN 账号密码

jenkins-system-setting2.png

配置 JDK & Git & Gradle

打开「系统管理」->「Global Tool Configuration」,配置以下环境。

通过 which 查看可执行命令路径:

1
2
3
4
5
6
7
8
$ which java
/usr/local/java/jdk1.8.0_121/bin/java

$ which git
/usr/bin/git

$ which gradle
/opt/gradle/gradle-2.14.1/bin/gradle

jenkins-system-setting3.png

注意,GRADLE_HOME 填 /opt/gradle/gradle-2.14.1,不是 /opt/gradle/gradle-2.14.1/bin/gradle
jenkins-system-setting4.png

Jenkins 的使用

创建 Job

jenkins-create-job1

jenkins-create-job2

配置 Job

jenkins-config-job1
jenkins-config-job2

jenkins-config-job3

jenkins-config-job4

jenkins-config-job5

jenkins-config-job6

Gogs 上配置 web 钩子

gogs-config-webhook1

gogs-config-webhook2

gogs-config-webhook3

gogs-config-webhook4

测试 web 钩子

gogs-config-webhook5

jenkins-build-history

参考链接

CentOS7 命令行安装 Android SDK

Ubuntu 上安装 Gradle

上传文件到 SVN 报错

Android SDK 不接受许可协议

.android/repositories.cfg could not be loaded

OLDER > < NEWER