docker + jenkins + git + maven自动化构建与部署
准备工作
- 安装好最新docker
- docker 分别pull 以下镜像
jenkins:2.0-beta-1
tomcat
mysql
(mysql只用来做测试项目的数据库,有其它数据库服务器的可以不下载) - 下载
maven
解压mkdir -p /dockerworkspace/maven && tar zxf apache-maven-3.3.9-bin.tar.gz -C /dockerworkspace/maven
- 下载
jdk
tar zxf jdk*.tar.gz -C /dockerworkspace/java/ && mv /dockerworkspace/java/jdk* /dockerworkspace/java/jdk
本教程所有工具和数据目录存放于
/dockerworkspace
目录下
安装jenkins
1 | docker run -d --name jenkins |
访问jenkins:8080(jenkins改成服务器地址) ,然后输入以下查看到的密码Unlock Jenkins1
cat /dockerworkspace/jenkins/secrets/initialAdminPassword
Customize Jenkins
步骤时选择左边的Install suggested plugins
等待插件安装完成, 然后填写管理员信息
配置Jenkins
登陆jenkins, 进入
系统管理-插件管理-可选插件
搜索ssh plugin
然后安装, 安装界面选择安装好后重启jenkins进入
系统管理-系统管理-可选插件 - SSH remote hosts
填写部署tomcat项目的host信息设置邮件发送服务器
- 进入
系统管理-系统管理-Jenkins Location
中系统管理员邮件地址
邮件通知
中QQ企业邮箱设置如下(发件人的邮箱地址要和上面系统管理员邮件地址一致
不然会报错)
- 进入
JDK配置
- 进入
系统管理-Global Tool Configuration - jdk
- 点新增JDK,别名:
jdk
JAVA_HOME
填写/usr/local/jdk
(我截图里用的是ibm家的jdk)
- 进入
Maven配置
- 进入
系统管理-Global Tool Configuration - Maven
- 点新增Maven,别名:
maven
MAVEN_HOME
填写/usr/local/maven
- 进入
新建测试项目
本教程中git管理端用的是gogs
创建jenkins中的maven 项目
在jenkins首页点击新建选择
构建一个maven项目
填写项目名称test_tomcat
(如果没有这项请安装插件
Maven Integration plugin
)源码管理中选择git, 填写项目的git信息(Credentials点新增可以添加git的认证信息,支持
帐户名密码
,ssh key
等方式.源码浏览器
在构建项目时的修改记录
可以直接连接到git平台)
构建触发器
身份验证令牌
可以随意填写一个任意长度的字符串, 也可以填写uuid之类的, 并记录下来, 以后会用到
Post Steps (部署部份配合主机上的一人脚本使用,脚本内容往下看)
- 选择
Run only if build succeeds
只在构建成功时运行 Add post-build step
选择Execute shell script on remote host using ssh
然后选择服务器和执行脚本信息
- 选择
- 在gogs上创建git hook (这一步在gitlab或github应该也有相应的方法)
- 进入上面构建的git项目
首页-仓库设置-管理git钩子-post-update
- 填写以下脚本 (请把环境变量改为自己相应的服务器信息)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16!/bin/sh
请修改以下环境变量
SERVER=http://127.0.0.1:8080 #jenkins服务器地址
TOKEN=jenkins1270018080hosttesttomcat #jenkins项目的 身份验证令牌
JENKINS_USER=admin #jenkins用户
JENKINS_PWD=admin # jenkins用户密码
JENKINS_PROJECT=test_tomcat # jenkins项目名
echo "Startting Build War File On Jenkins's Server"
echo "Setting Token On The Jenkins's Server......"
CRUMB=$(curl -s --user $JENKINS_USER:$JENKINS_PWD \
$SERVER/crumbIssuer/api/xml?xpath=concat\(//crumbRequestField,%22:%22,//crumb\))
echo "Trigger Jenkins's Server Start Building......"
curl -s --user $JENKINS_USER:$JENKINS_PWD -H "$CRUMB" $SERVER/job/$JENKINS_PROJECT/build?token=$TOKEN
echo "Jenkins's Server Build Success!"
- 进入上面构建的git项目
tomcat 服务器配置
1 | docker run -d |
测试用mysql服务器1
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=admin -d mysql
创建一个脚本文件vim /dockerworkspace/tomcat/deploy.sh
内容如下
1 | !/bin/sh |
测试
在本地项目中git push, 查看jenkins会不会自动构建,然后检查docker中的容器是否正确部署