Docker + Jenkins + Android 环境搭建

本文通过 群晖 使用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主要需要:

  1. JDK(Jenkins 本身就是运行在Java上,所以不需要安装。但是要注意,最新的Jenkins已经大于JDK8)
  2. Gradle (最新的Jenkins已经大于JDK8,如果用老版本的Gradle会有问题,推荐用最新的)
  3. Android SDK (可以通过sdkmanager去下载)

剩下的就是环境变量的设置,这些都已经在dockerfile中写好了直接运行即可

构建镜像

使用如下命令创建镜像

docker build -t jenkins_android -f  ./dockerfile . 

注意 此时你的终端工作路径 应该是这个dockerfile的文件夹路径下,第一个“jenkins_android”是生成的镜像名字,第二个“dockerfile”是第一步文件保存的名称


命令执行完成后的构建结果

查看生成的文件名称

docker images

因为下载了gradle等 android 需要的文件 所以镜像比较大,下载比较慢,网速慢的需要耐心等待一下


image.png

构建容器

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了


Jenkins

注意事项 ⚠️

细心的同学就会发现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目录,然后从新压缩,自己放到一个文件文件服务器上即可,我这里就暂时不提供文件服务器了,我自己压缩好的文件可以在评论区上一个某网盘的链接

需要增加一级目录文件

你可能感兴趣的:(Docker + Jenkins + Android 环境搭建)