目标:
通过docker部署运行jenkins环境。并对maven项目进行自动化测试、打包和持续部署。
过程如下:
1,准备docker环境
(我的操作环境是centos7,CentOS下安装docker环境见我另外一篇文章)
# docker -v
Docker version 1.13.1
附:查看centos的版本命令
# cat /etc/os-release
2,下载Jenkins的docker镜像,并运行
docker pull docker.io/jenkins/jenkins:latest
- 为Jenkins建立挂载目录并未目录授权,我这里的目录为 /docker/data/jenkins/
mkdir -r /docker/data/jenkins/
sudo chown -R 1000:1000 /docker/data/jenkins/
- 拉取 jenkins镜像并构建容器(这里用的是jenkins当前最新的2.x版本)
docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /docker/data/jenkins:/var/jenkins_home docker.io/jenkins/jenkins:latest
docker ps
参数说明:
-p 8080:8080 -p 50000:50000是开发的访问端口
--name jenkins 是容器名
--privileged=true 是提供挂载目录的管理权限(centos默认不提供)
-v /docker/data/jenkins:/var/jenkins_home 是目录挂载
成功构建后docker ps会显示容器
3,初始化Jenkins配置
1)浏览器打开http://ip:8080进行初始化
2)在Administrator password环境,通过运行docker命令查看
sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
在插件初始化时选左侧经典就好了。
3)在“系统管理”-“管理插件”添加插件“Deploy to container”用于部署编译后的程序到tomcat
4)在“系统管理”-“Global Tool Configuration”中添加JDK工具和maven工具
需要注意的是要设置登录oracle网站的账号密码
这2个工具都会在首次进行项目构建的时候自动下载。
4,添加项目配置
回到主页,进行项目添加,选择“构建一个自由风格的软件项目”。
1)General区设置项目名字、描述信息
2)源码管理区设置git或svn的配置,这里我用到的是svn
设置Repository URL为项目在服务器上的路径
设置Credentials为账号密码
Local module directory和Repository depth保持不变。
3)设置“构建”选择“Invoke top-level Maven targets”在Goals中填写 package
用maven的package来打包项目生成war包
4)设置“构建后操作”选择 Deploy war/ear to a container 在WaR/EAR files 中填写 target/<包名>.war
这里面的包名生成结构是pom.xml中配置的artifactId标签值和 version标签值的组合: artifactId-version.war
不确定的话可以在项目上先后建一下确定war的名字
在“ Containers”中添加一个Container,这里我选择的是tomcat9.需要设置tomcat的的运行地址以及管理员账号密码
注:因为采用的是tomcat的热部署
所以tomcat必须先配置tomcat-users.xml提供manager-script角色。
附:tomcat-users.xml的配置
<role rolename="manager-script"/>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui,manager-script"/>
5,运行构建
执行项目构建后,可以在构建的ConsoleOutput中查看控制台输出的日志。首次构建会看到对jdk和maven环境的下载和安装
6,配置自动化持续构建
Build after other projects are built:在其他项目触发的时候触发,里面有分为三种情况,也就是其他项目构建成功、失败、或者不稳定的时候触发项目;
Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。
H/5 * * * * (每5分钟检查一次源码变化)
Build periodically:周期进行项目构建(它不关心源码是否发生变化),如下图配置:
H 2 * * * (每天2:00 必须build一次源码)
在 Schedule 中填写 0 * * * *。
第一个参数代表的是分钟 minute,取值 0~59;
第二个参数代表的是小时 hour,取值 0~23;
第三个参数代表的是天 day,取值 1~31;
第四个参数代表的是月 month,取值 1~12;
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
注意
如果maven不能自动安装需要官方手动下载tar.gz到卷目录,并进入容器内进行解压,另在系统管理-全局共计配置-提供maven的 全局和默认 settings 配置、maven的name和MAVEN_HOME配置
最后在项目构建配置中选中对应的name