本文通过 群晖 使用docker搭建Jenkins + Android构建环境
硬件设备:黑群晖6.2.3
主要是通过dockerfile创建的Jenkins容器以及使用,这样可以定制化
dockerfile
创建一个文件“dockerfile”,在文件中写入如下代码
# 基于已有的镜像 jenkins/jenkins 来构建新镜像
FROM jenkins/jenkins
MAINTAINER zhushuai
USER root
RUN apt update -y && apt upgrade -y && apt install wget unzip -y
# 设置变量
ENV USR_LOCAL="/usr/local" \
ANDROID_HOME="${USR_LOCAL}/AndroidSdk" \
SDK_TOOL_URL="http://192.168.31.6:8088/s/n5cZ5Bjs8cpDENJ/download/cmdline-tools.zip"
#https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip
# 创建android sdk目录,并下载 sdkmanager
RUN mkdir -p ${ANDROID_HOME} \
&& cd $ANDROID_HOME \
&& curl -o sdk.zip $SDK_TOOL_URL \
&& unzip sdk.zip \
&& rm sdk.zip
#RUN mkdir ${ANDROID_HOME}/cmdline-tools/latest
#COPY ${ANDROID_HOME}/cmdline-tools/bin/ ${ANDROID_HOME}/cmdline-tools/latest
#COPY ${ANDROID_HOME}/cmdline-tools/lib/ ${ANDROID_HOME}/cmdline-tools/latest
#COPY ${ANDROID_HOME}/cmdline-tools/NOTICE.txt ${ANDROID_HOME}/cmdline-tools/latest
#COPY ${ANDROID_HOME}/cmdline-tools/source.properties ${ANDROID_HOME}/cmdline-tools/latest
RUN echo "export PATH=/AndroidSdk/cmdline-tools/latest/bin" >> ~/.bashrc
# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
RUN echo y | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-28" "build-tools;28.0.3" "ndk-bundle" "cmake;3.6.4111459"
# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV PATH ${ANDROID_HOME}/cmdline-tools/latest:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${PATH}
Jenkins构建android主要需要:
- JDK(Jenkins 本身就是运行在Java上,所以不需要安装。但是要注意,最新的Jenkins已经大于JDK8)
- Gradle (最新的Jenkins已经大于JDK8,如果用老版本的Gradle会有问题,推荐用最新的)
- Android SDK (可以通过sdkmanager去下载)
剩下的就是环境变量的设置,这些都已经在dockerfile中写好了直接运行即可
构建镜像
使用如下命令创建镜像
docker build -t jenkins_android -f ./dockerfile .
注意 此时你的终端工作路径 应该是这个dockerfile的文件夹路径下,第一个“jenkins_android”是生成的镜像名字,第二个“dockerfile”是第一步文件保存的名称
查看生成的文件名称
docker images
因为下载了gradle等 android 需要的文件 所以镜像比较大,下载比较慢,网速慢的需要耐心等待一下
构建容器
docker run -p 8080:8080 -p 5000:5000 --name jenkins -u root -v /Users/docker/jenkins:/var/jenkins_home -d jenkins_android
-p 端口设置
-d 后台运行,不用终端一只等着
-v 容器文件映射到本地,“/Users/docker/jenkins”是需要修改成自己的目录,这里包含着jenkins的数据,以后可以迁移的时候直接打包带走
--name 指定运行后的容器名称 ,可以自定义
jenkins_android 是上面dockerfile文件生成镜像的名称,注意跟上面执行的时候一致即可
然后使用你的IP地址+端口号(如:127.0.0.1:8080)在浏览器中就可以访问jenkis了
注意事项 ⚠️
细心的同学就会发现dockerfile中的问题,下面的这个地址是本地的地址,根本就下载不到的
http://192.168.31.6:8088/s/n5cZ5Bjs8cpDENJ/download/cmdline-tools.zip
这个就是“https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip”上下载的文件,并不是文件无法下载,而是要使用这个文件中的sdkmanager下载sdk还有ndk,直接解压使用有问题,具体是啥我忘记了,解决方法就是从“https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip”下载下来文件,解压后将所有文件增加一级latest目录,然后从新压缩,自己放到一个文件文件服务器上即可,我这里就暂时不提供文件服务器了,我自己压缩好的文件可以在评论区上一个某网盘的链接