由于docker的官方收录了jenkins,所以我们可以方便的下载。注意官方的包使用的是debain,即非ubuntu也非centos,在配置相关环境的时候要相应的配置。
#docker pull jenkins:latest
因为我们要支持android的编译,所以需要操作系统支持32位环境。
FROM jenkins:latest USER root RUN dpkg --add-architecture i386 RUN apt-get update RUN apt-get install -y lib32z1 lib32ncurses5 lib32stdc++6 USER jenkins
编译完成后,我们要生成image。
#docker build -t lencee/jenkins:latest .
编译之后可以找到这个image。然后进行启动。
#docker run -d --name jenkins -u root -p 9002:8080 -v $PWD/data:/var/jenkins_home -e "TZ=Asia/Shanghai" -i lencee/jenkins:latest
这里"-u root"表示通过root用户来运行程序,避免一些permission的问题。
jenkins的插件maven可以选择自动安装,安装的位置会在 /var/jenkins_home/tools下,找到maven之后,修改conf/settings.xml文件,把repo的位置设置在/var/jenkins_home/tools/repo下,建立一个repo文件夹,这样一来,docker映射的host机器的路径就有这些仓库文件了。好处就是你可以随时关闭docker container,甚至删除(谨慎操作)都可以,当你重启一个jenkins的时候,编译也不会重新去下库,同时你也可以手工维护。
这个插件会安装在/var/jenkins_home/tools/android-sdk下,你完全可以手工维护,因为国服的关系,链接https会有麻烦。这里列出手工维护所需条件和方法。首先,手工维护需要host机器安装jdk环境,这个jdk可以和docker内的java环境不一样,只是为了运行android-sdk的tools。完成之后即可运行以下命令:
查询安装内容命令
#./android list sdk -s -a --no-ui --proxy-host 203.208.46.200
安装某个sdk内容的命令
#./android update sdk -s -a --no-ui --proxy-host 203.208.46.200 -t [0,1,2...]
手动维护完成之后。就可以在jenkins中编译android项目了。
注意
不需要安装任何android插件,只需要安装相应的gradle或者ant即可。
可以看出来Jenkins的工具都安装在/var/jenkins_home/tools中,所以你完全可以自己下载工具,放在tools目录中,然后进行相应的手工配置(主要是方便扩展),之后在Jenkins的全局配置页面设置地址为 /var/jenkins_home/tools/<your_tools>即可。
Github
docker hub