gitlab+jenkins+maven持续集成自动化部署平台

背景:为了改变目前手工发布项目的流程烦锁,耗时,容易出错,浪费人力物力财力,低效的状况,搭建基于docker容器化的git+jenkins+maven持续集成自动化部署平台,实现从代码提交到生产部署的自动化解决方案,把整个开发生产过程流水线自动化,为公司节省人力物力财力,为开发人员省下更多的时间去优化业务功能等。

能够通过自动化构建、测试和发布流程,通过运行一整套,一致的质量检查提高软件更新的速度和质量。从代码提交到应用部署的自动化完整流程,确保只有通过自动测试的代码才能交付和部署,高效替代业内部署复杂、迭代缓慢的传统方式。

一、安装docker

yum -y install docker

启动docker 后台服务:

service docker start

查看docker版本等详细信息:

011607_z1gH_1789904.png

二、docker安装gitlab

docker pull gitlab/gitlab-ce:latest

012647_UgZZ_1789904.png

创建并启动gitlab容器:首次启动可能比较慢,需要等待一分钟左右的时间。

docker run --detach --hostname X.X.X.X --publish 8099:80 --publish 2222:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab:z --volume /srv/gitlab/logs:/var/log/gitlab:z --volume /srv/gitlab/data:/var/opt/gitlab:z 453d64ae84c7

012851_zvpY_1789904.png

启动成功后,打开hostname指定的地址+端口: http://X.X.X.X:8099, 即可看到gitlab管理后台, 账号:root, 密码自己设置,登录后:即可添加分组添加用户及创建项目等操作

013735_Bv9w_1789904.png

创建组名xiejunbo, 创建项目名web, 创建用户名xiejunbo,并把用户xiejunbo加入组。

012952_oqLw_1789904.png

添加用户本机和jenkins所在服务器的SSH-KEY:

WINDOWS 10:

013249_1E6C_1789904.png

CentOS7:

013842_uPP0_1789904.png

在user-->settings-->SSH Keys添加:

014438_K46u_1789904.png

初始化maven项目web,并推送上gitlab:

003759_Du2M_1789904.png

 

 

三、docker安装jenkins

拉取镜像

docker pull jenkins/jenkins

011039_kOm9_1789904.png

创建jenkins容器:指定jenkins目录,8080端口映射,maven目录和java目录

docker run -d --name jenkins -p 8088:8080 -p 50000:50000 -v /usr/local/jenkins_home:/var/jenkins -v /usr/share/maven:/usr/local/maven -v /usr/jdk1.8.0_144:/usr/local/jdk 861760a10fdb

启动容器:

011135_sV3d_1789904.png

打开http://X.X.X.X:8088, 首次打开:

020311_mR2H_1789904.png

进入jenkins容器拿到对应password后进入下一步

docker exec -it 9b5 /bin/bash

cat /var/jenkins_home/secrets/initialAdminPassword

020538_QQPL_1789904.png

选择默认或自定义模式安装对应插件,然后进入jenkins容器获取密码, 然后安装对应插件(选上JUnit Plugin,SSH plugin,分别用于自动化单元测试和执行远程服务器shell脚本, 还有个Maven Integration plugin, 用于Maven集成,否则新建的时候没有Maven Project):

021116_lsRh_1789904.png

然后设置用户名和密码,如下:

010613_mtZS_1789904.png

010755_XkOX_1789904.png

010819_prYg_1789904.png

四、配置jenkins

系统管理-->系统设置,底部,配置邮件通知:

设置管理员邮件:

003308_l6mV_1789904.png

设置smtp邮件代理:

032314_raNl_1789904.png

测试收件:

032351_oubt_1789904.png

 

接下来配置maven_home, maven配置文件地址,java_home及git:

024402_ni7P_1789904.png

 

创建一个maven风格的web项目:

022935_VJ5W_1789904.png

填写基本项:

023241_A67S_1789904.png

jenkins配置推送触发事件:

183210_xTly_1789904.png

在gitlab后台配置事件接口及token:

183305_oKyU_1789904.png

测试提交代码到gitlab,触发事件推送,jenkins开始执行构建任务。

配置jenkins服务器和部署服务器ssh-key证书,实现从jenkins服务器到部署服务器免密码登录:

配置过程

010005_EI4h_1789904.png

010031_DE9a_1789904.png

 

遇到的坑:

1. jenkins所在服务器的key验证失败

013024_7Mbb_1789904.png

解决方法:jenkins所在服务器删除掉server, 重新设置server即可。

2.从一个非tty环境执行脚本;Jenkins不能正常从你的脚本中退出

155941_eFxC_1789904.png

解决方法:jenkins脚本配置选项,选中

Exec in pty

配置servers:

103448_3pWM_1789904.png

部署脚本:

cd demo-service/bin
echo hellooooooooooooooooooooooooooooooooooooooo
cd /root/demo-service/bin
nohup ./execute.sh restart
echo ================= end ====================

 

 

五、提交代码测试结果

过程:(开发人员只需完成第1步,其余步骤自动完成)

1. 修改代码,提交到gitlab。

2. gitlab触发push事件到jenkins。

3. jenkins收到push事件后,开始从gitlab下更新最新代码。

4. jenkins用maven编译构建打包项目。

5. 编译打包通过后调用部署脚本进行自动部署。

173250_9TNc_1789904.png

234644_E0fJ_1789904.png

234733_6eeq_1789904.png

 

005626_H7Iw_1789904.png

173158_ejVV_1789904.png

自动部署成功

 

 

转载于:https://my.oschina.net/xiejunbo/blog/1556409

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值