Docker,使用 Jenkins 编译 Android APK

Docker 初始化部署

获取 docker jenkins 镜像

1
2
3
4
5
# 长期支持版本
docker pull jenkins/jenkins:lts

# 最新版本
docker pull jenkins/jenkins

初始 参数解释

docker 环境 目录 /var/jenkins_home 映射宿主目录 ~/jenkins
docker 环境 端口 8080 映射宿主端口 8002

1
2
3
4
5
# 后台方式运行
docker run -d -p 8002:8080 -v ~/jenkins:/var/jenkins_home --name jenkins --restart=always jenkins/jenkins

# 查看容器日志
docker logs -f jenkins

发现错误日志

1
2
touch: cannot touch '/var/jenkins_home/xxxx.log': Permission denied
Can not write to /var/jenkins_home/xxxx.log. Wrong volume permissions?

需要在 宿主 对目录授权 ~/jenkins

1
2
3
4
5
# 开启目录权限
sudo chmod a+rwx ~/jenkins

# 开启docker挂载权限
sudo chmod a+rw /var/run/docker.sock

Docker 中更新 jenkins

宿主下载 jenkins.war 目录 ~/jenkins,进入 docker shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 普通用户身份 进入容器 shell 其中 861b 为容器Id 861be1055500 的前4位,支持模糊查询
docker exec -it 861b /bin/bash

# root 身份 进入容器 shell 其中 861b 为容器Id 861be1055500 的前4位,支持模糊查询
docker exec -it -u root 861b /bin/bash

# 替换后
cp /var/jenkins_home/jenkins.war /usr/share/jenkins/jenkins.war
exit

# 重启容器
docker restart 861b

#下载 Android SDK 工具 并解压到 android.sdk
wget -O sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip && unzip sdk.zip -d android.sdk && rm sdk.zip