Android项目持续集成环境

系统环境

系统环境centOS 7

制作jenkins的Docker镜像

安装docker。

执行 docker pull jenkins 拉取jenkins镜像。

将maven git 安装到镜像内

编写Dockerfile

docker运行jenkins的命令:

1
docker run -d -p 8080:8080 --name  jenkins-master jenkins

这里将docker的8080端口映射到本级的8080端口,该docker实例的name叫 jenkins-master

挂载Volume(数据卷)

通过docker镜像运行实例的时候,docker会添加一个读写层用来记录文件的修改,一旦实例退出,该读写层消失。为了持久化数据,Docker引入Volume的概念。Volume是可以挂在到docker上的文件目录。

通过命令docker run -v 来创建一个volume并挂在到docker容器。

jenkins需要的数据:

1
cd ~ && mkdir jenkins

挂载的命令:

1
docker run  -v  ~/jenkins:/var/jenkins_home -d -p 8080:8080 --name  jenkins-master jenkins

这样就将刚刚创建的jenkins目录挂载到docker的/var/jenkins_home

安装git

映射 ~/.gitconfig 到docker 容器内

安装Android SDK
1
2
3
4
5
6
7
8
cd ~
wget https://dl.google.com/android/android-sdk_r25.2.3-linux.tgz

tar xvzf android-sdk_r25.2.3-linux.tgz

mv android-sdk_r25.2.3-linux android-sdk

cd android-sdk

安装缺失的support 包,这个根据自己Android项目依赖的具体情况选择。

1
2
3
4
5
6

./tools/bin/sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha8"

./tools/bin/sdkmanager "extras;m2repository;com;android;support;appcompat-v7;24.2.1"

./tools/bin/sdkmanager "extras;m2repository;com;android;support;design;23.3.0"

centOS缺失Android SDK运行时必须的 lib

1
yum install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1

jenkins构建Android项目的时候注意添加:

1
echo "sdk.dir=/var/android-sdk" >> local.properties

挂载AndroidSDK目录,之前docker命令变成

1
docker run  -v  ~/jenkins:/var/jenkins_home -v ~/android-sdk:/var/android-sdk -d -p 8080:8080 --name  jenkins-master jenkins
jenkins配置

可以配置定时跑任务。

安装gitlab插件(jenkins第一次启动的时候会提示安装插件,选择默认的标准安装即可)可以方便githook,比如代码push就触发构建。

可以配置参数化构建,更具灵活性。