赞
踩
从前三篇文章中,我们已经实现了gitlab、jenkins项目的安装与基础配置,并且给Centos7操作系统搭配了jdk、maven等环境变量。从这边文章起,“从零实现DevOps”系列,将正式开始利用Jenkins+Gitlab的完美结合,一步步实现全栈项目的持续集成和持续部署(CI/CD),以后也会引入Docker+Dockerfile+docker-compose的方式去实现快速部署。那么,第一篇文章先传统的SpringBoot项目开刀,在Jenkins本地环境中用jar包的方式简单实现一下,开始吧!!!
点击Jenkins首页中的Manage Jenkins,进入系统设置
点击Plugins,进入插件中心
选择Available Plugins,搜索Locale,勾选后,点击Install without restart(安装无需重启)
等待安装完毕后返回首页
再次点击Manage Jenkins,点击System,进入系统配置
往下拉,找到Locale,输入框中输入“zh_CN”,勾选下边的按钮(忽略浏览器首选项并向所有用户强制使用此语言),点击保存返回首页
地址栏后边加上“/restart”后刷新网址,重启Jenkins
等待重启后成功
可能是因为版本问题,我点击系统级的Credentials时,并没有添加凭据的地方,所以,我选择在添加Gitlab地址的地方添加令牌
进入Gitlab,找到自己的项目,复制你的项目git地址
配置页面,往下拉,找到源码管理,将git地址复制进Repository URL,并选择Credentials(在一.3中配置的,也可以在这里添加并选择)
文中提示报错“Failed to connect to repository : Error performing git command: git ls-remote -h http://192.168.1.11/root/test_project.git HEAD”,是因为服务器未安装git导致,yum安装一下
yum install git
4. 安装成功后,再次把git地址粘贴进Repository URL,就不会出现刚才的错误了
5. 继续往下拉,在“指定分支”处,配置你想要自动部署的分支
觉得手欠的可以先应用一下,再继续进行,防止误关闭页面!!!
触发策略由自己决定
- Push Events:提交Push代码触发
- Opened Merge Request Events:合并分支触发
配置GitLab的Webhooks,搭建钩子,触发部署事件(重中之重)
打开Gitlab需要部署的项目,左侧点击设置,然后点击Webhooks
Webhooks中:URL是“Build when a change is pushed to GitLab”后边的那个地址,粘贴进去
回到jenkins,往下拉,点击高级,找到“Secret token”,点击“Generate”,生成令牌,并把这个令牌粘贴进Gitlab-Webhooks的“Secret 令牌”中
在Webhoos配置中,勾选推送事件和合并请求事件,并点击“添加webhooks”
推送事件中,你可以配置所有分支或者指定的分支,一般来说,部署哪个分支选择哪个即可
所以,我选择的“通配符样式”,并指定的“dev”分支(dev)
点击保存时,Gitlab有可能会报错“Url is blocked: Requests to the local network are not allowed”,这是因为你没有开启Webhooks的出站请求!
解决方法:
(1)进入管理员设置
(2)点击设置,进入网络设置
(3)找到出站请求,点击展开,勾选“允许来自 webhooks 和集成对本地网络的请求”,保存更改即可
(4)重新配置webhook,即可成功。成功效果如图:
再次提醒,Jenkins最好点击一次应用,防止丢失!!!
小贴士:
其实,在此步骤完成后,你可以将jenkins保存一下,回到首页。并且在刚才配置的Gitlab-webhooks中,点击测试的推送事件,尝试一下,项目能不能成功打包!!!
回到Jenkins,可以发现已经成功构建一次
然后去你服务器的“/root/.jenkins/workspace”中,去看看有没有项目代码,target文件夹中有没有jar包~~~
可以发现,我的Gitlab项目已经上传成功,并且打包成功!!!
如果你有兴趣,也可以看看构建的控制台输出,里边也有打包的输入内容,神奇吧~~~
勾选“Add timestamps to the Console Output”,方便打印控制台日志!!!
点击增加构建步骤,选择“Invoke top-level Maven targets”
Maven版本选择在一、4中配置的maven版本,“目标”是我们打包命令
clean package -Dmaven.test.skip=true -U
cd /data/java
touch start.sh
vim start.sh
脚本内容如下,需要根据个人情况改三个地方
第4行:Java环境变量配置位置(一般是:source /etc/profile)
第6行:jar包位置
第8行:jar包名称
#!/bin/bash
#cp /dev/null /nohup.out
# 重新加载环境变量
source ~/.bash_profile
# 跳转到Jar地址
cd /data/java
# 设置Jar包名称变量
APP_NAME=jimapaotui-2.0.jar
# 杀死原有进程号
ID=`ps -ef | grep $APP_NAME | awk '{print $2}'`
echo "------start---------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
# 防止杀死进程
BUILD_ID=dontKillMe
# 启动Jar包
nohup java -jar $APP_NAME > nohup.out 2>&1 &
echo "------end---------"
为start.sh增加执行权限
sudo chmod +x start.sh
#!/bin/bash
# 复制jar包到脚本中指定的位置
cp ./target/jimapaotui-2.0.jar /data/java
# 执行启动脚本
sh /data/java/start.sh
如图:
至此,流水线配置已全部完毕,接下来,进行测试流程!!!
从刚才指定的dev分支提交一次代码
Jenkin已经开始构建了
构建成功
去服务器上看看jar包是否上传,是否执行成功
cd /data/java
ps -ef | grep **.jar
至此,Jenkins结合GitLab实现本地代码自动化部署的功能已经实现,下一期我们会实现远程服务器部署Jar包项目的实例!!!
所有你想象的一切,皆是现实!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。