Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.
安装环境
Linux系统:Ubuntu 16.04
docker版本:18.09.5
jenkins版本: 2.164.2
前置条件
宿主机已安装
maven
jdk
docker
部署思路
安装Jenkins > 重置密码 > 安装码云/Maven插件 > 配置JDK/Git/Maven信息 > 创建任务
- 构建Docker for jenkins
- 在Docker for jenkins官网中获悉稳定版本
- 宿主机创建jenkins目录
- 调整home目录权限(* 稍后会讲)
$ mkdir -p /usr/local/docker/jekins/home
$ sudo chown -R 1000:1000 /usr/local/docker/jenkins/home/
方式:docker-compose 构建(推荐)
version: "3" # Docker-Compose 版本
services: # 容器服务
jenkins: # Jenkins 容器
container_name: jenkins #容器名
restart: always
image: jenkinsci/blueocean #选择镜像
user: root #在容器中以 root 用户运行
privileged: true #表示当前容器具有特权
ports:
- 9999:8080 #HTTP 通信信道
- 50000:50000 #基于JNLP的Jenkins代理通过TCP端口50000, 我也搞不懂,可以不要
volumes:
- /usr/local/docker/jenkins/home:/var/jenkins_home #挂载jenkins 主文件
- /var/run/docker.sock:/var/run/docker.sock #docker: 使Jenkins能调用docker命令
- /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 #docker需要
- /usr/local/maven/apache-maven-3.6.1:/usr/local/maven/apache-maven-3.6.1 #采用宿主机的Maven
- 配置jenkins
- 修改Jenkins密码
查看 jenkins 日志,获取初始密码
[root@scrt /usr/local/docker/jenkins]# docker logs -f jenkins
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
d282e25e05954d3588bbb5eba02e7dc2
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
登陆 jenkins 控制台(http://宿主机:9999) , 通过初始密码(d282e25e05954d3588bbb5eba02e7dc2)
- 安装码云插件 Gitee
- 安装docker插件 Docker plugin
- 全局工具配置
- JDK: 注意使用容器自带的JDK配置
JAVA_HOME:/usr/lib/jvm/java-1.8-openjdk/ - 其他:参见: Jenkins-码云-Maven自动化部署
- JDK: 注意使用容器自带的JDK配置
- 注意事项
- 1.报错:
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
调整home目录权限
如果不执行目录权限修改,容器无法启动
当映射本地数据卷时,/usr/local/docker/jenkins/home/目录的拥有者为root用户,而容器中jenkins user的uid为1000,会报错
sudo chown -R 1000:1000 /usr/local/docker/jenkins/home/
-
- 安装libltdl.so.7
通过 yum install 命令即可轻松安装:
yum install libltdl.so.7
安装好后,查看安装位置,为使用卷做准备:
which libltdl.so.7
我这里的安装位置是:
/usr/lib64/libltdl.so.7
在 Jenkins 镜像中使用这个 library 的位置是 /usr/lib/x86_64-linux-gnu/libltdl.so.7,通过 -v 映射即可。
- 容器的JDK
默认JDK:./usr/lib/jvm/java-1.8-openjdk/ 可用于jenkins配置
其他资料
- 官方指南:Docker Hub for Jenkins
- 中文指南: Jenkins
- 自动部署: Jenkins-码云-Maven自动化部署
- 持续集成: Docker+Jenkins持续集成环境