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

别说谁变了你拦得住时间么 提交于 2019-11-29 18:32:28

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

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

一、安装docker

yum -y install docker

启动docker 后台服务:

service docker start

查看docker版本等详细信息:

二、docker安装gitlab

docker pull gitlab/gitlab-ce:latest

创建并启动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

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

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

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

WINDOWS 10:

CentOS7:

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

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

 

 

三、docker安装jenkins

拉取镜像

docker pull jenkins/jenkins

创建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

启动容器:

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

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

docker exec -it 9b5 /bin/bash

cat /var/jenkins_home/secrets/initialAdminPassword

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

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

四、配置jenkins

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

设置管理员邮件:

设置smtp邮件代理:

测试收件:

 

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

 

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

填写基本项:

jenkins配置推送触发事件:

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

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

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

配置过程

 

遇到的坑:

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

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

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

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

Exec in pty

配置servers:

部署脚本:

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. 编译打包通过后调用部署脚本进行自动部署。

 

自动部署成功

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!