Jenkins+gitlab搭建与使用(二)

文章引导

Jenkins配置自动化发布-简单优化
GitLab回调钩子Webhooks构建项目
Jenkins常用的几种触发器
Jenkins的cron表达式
Jenkins的Poll SCM构建项目

Jenkins配置自动化发布-简单优化

1. Jenkins构建环境中,因为一些命令执行可能会出现超时,来优化命令杜绝问题
在Linux终端执行命令中,若使用nohup等一些了等待结果命令,那么Jenkins的自动化任务就会有失败的可能,从而影响整个业务线。

示例:如下图直接运行java程序,然后命令行一直在卡住,其实jar包已经启动起来了,如果时间长了以后,Jenkins会认为一直没有完成,那么可能会提示任务失败。

[root@nexus ruoyi-master]# nohup java -jar ruoyi-admin.jar
nohup: 忽略输入并把输出追加到"nohup.out"


进行对命令的优化

##nohup语法(数据流量定向)
##那么需要对命令进行优化 
< 覆盖写入   << 追加写入
> 覆盖输出   >> 追加输出
标准输入(stdin):代码为0,使用 < 或 << 
标准输出(stdout):代码为1,使用> 或 >>
标准错误输出(stderr):代码为2,使用2> 或者2>>
##nohup java -jar ruoyi-admin.jar > nohup.out 2>&1 &
##这段的意思是:直接覆盖写入文件nohup.out,2>&1将标准错误输出重定向到标准输出到一个文件里面

##第一种优化,使用优化好的启动命令,就不需要卡住命令行,这样Jenkins对于这条命令执行完成后,可以直接返回任务成功
[root@nexus ruoyi-master]# nohup java -jar ruoyi-admin.jar > nohup.out 2>&1 &
[1] 2395

##第二种优化,使用启动java包的shell脚本文件,启动和暂停。执行完成脚本后,Jenkins对于这条命令执行完成后,直接返回任务成功
[root@nexus ruoyi-master]# ./ry.sh start
Start ruoyi-admin.jar success...
[root@nexus ruoyi-master]# ./ry.sh stop
Stop ruoyi-admin.jar
ruoyi-admin.jar (pid:2618) exiting...
ruoyi-admin.jar exited.

对于执行命令的用时来配置Jenkins的超时时间,减少发布的失败问题
点击项目配置,摘到构建后操作框里,然后再点击高级
在这里插入图片描述
找到Exec timeout (ms),输入大概的时间(注意是毫秒)
在这里插入图片描述

2. 如:在使用Jenkins自动化操作发布一个程序的时候,肯定先要把需要更换程序包的程序杀死,不然后面再启动程序包会出来端口冲突,这样会导致发布失败,那么就需要用到Jenkins的项目配置中的Pre Steps功能。如构建前需要对服务器什么操作,都可以使用。
在这里插入图片描述

示例:在执行更新程序包之前,先杀死需要更新的程序,避免出现端口占用问题

配置Jenkins,向目标服务器发送命令
在这里插入图片描述
找到在Jenkins全局配置里的服务器,选择需要发布的服务器来执行命令,然后保存
在这里插入图片描述
执行自动化任务,查看日志,发现在构建之前执行了杀死进程命令。
在这里插入图片描述
然后构建发布,执行成功
在这里插入图片描述

GitLab回调钩子Webhooks自动构建项目

配置在开发过程中提交代码到GitLab后,合并到主分支后,然后调用Jenkins,来实现自动构建发布项目

1.GitLab的Webhooks(回调钩子)通过一个新的事件,来调用Jenkins接口。
在Jenkins的项目里面配置一个构建触发器

给的示例为: JENKINS_URL/job/ruoyi-master/build?token=TOKEN_NAME
在这里插入图片描述
编辑URL:jenkins为项目访问路径,job是固定死的,ruoyi-master为项目名字,build为固定死的,token为刚才设置的密码。然后访问
在这里插入图片描述
测试是否Jenkins收到Get请求,开始执行构建任务
在这里插入图片描述
因发送URL来执行构建任务,需要先登录Jenkins,下载安装以下插件来实现不用登录认证Jenkins来执行URL的请求构建任务
在这里插入图片描述
编辑使用插件形成的URL:buildByToken/build?job=NAME&token=SECRET
只需要把Name替换成项目名字,SECRET替换成设置的密码,这样就实现了免登录

Jenkins来执行URL请求来执行自动构建了
在这里插入图片描述
查看Jenkins有构建执行,
在这里插入图片描述
因webhook出站功能是默认是关闭的,需要去管理中心开启,然后保存
在这里插入图片描述
在Gitlab上找到需要配置的项目上的webhook(回调钩子),把URL放到Gitlab配置上。
在这里插入图片描述
填入自动构建的URL,选择有合并请求事件
在这里插入图片描述
取消SSL验证,因为用HTTP请求没有用HTTPS请求,然后点击添加webhook
在这里插入图片描述
然后右下角会出现添加的webhook
在这里插入图片描述
点击测试合并请求是否能执行Jenkins自动化发布任务
在这里插入图片描述
查看jenkins是否执行构建任务
在这里插入图片描述
2. 提交代码然后创建合并请求
在这里插入图片描述
Jenkins执行了构建操作
在这里插入图片描述

Jenkins常用项目构建的几种触发器

快照(依赖与某一些其他的快照的时候,产生构建)
如:当前依赖了其他的SNAPSHOT,当被依赖的SNAPSHOT发生了变化的时候,会把当前依赖的SNAPSHOT项目进行构建。
在这里插入图片描述

Job依赖构建
如:Job上下依赖的,可以有父项目,当Maven项目构建的时候会有父子项目,父项目构建的时候然后子项目要先被构建。
当一个子项目构建的时候,那么配置了关联子项目的夫项目也会进行构建
在这里插入图片描述

定期构建(使用Cron表达式,但也不是标准的表达式)
如:每天,哪天等
在这里插入图片描述

使用Github进行构建(生产环境不太可能,代码泄露。会使用自己搭建的Gitlab)
如:把代码提交到Github,然后使用GitHub hook来发送请求给Jenkins进行构建
在这里插入图片描述
主动式检查构建(定期、定时的主动去检查代码托管服务器如Gitlab或者Github中的源码是否发生变化,发生变化然后进行构建)
如:设置托管项目的每天下午6点进行发起给Gitlab进行检查源码是否发生了变化,如果发生了变化,进行执行一次构建。如果没有发生变化就不用构建,继续等待第二天检查
在这里插入图片描述

Jenkins的cron表达式

标准的cron表达式的地址为:在线生成的cron表达式

第一个 * 代表每个小时的第几分钟,取值0~59
H * * * *
H:每小时执行一次

第二个 * 表示小时,取值0~23
* 15 * * *   表示每天下午3点
* 1 * * *    表示每天凌晨1点

第三个 * 表示一个月的第几天,取值1~31
* 1 5 * *    表示每月5日凌晨1点

第四个 * 表示第几月,取值1~12
* 15 5 1 *   表示每年每月5日15时执行

第五个 * 表示一周中的第几天,取值0~7,0和7都代表时周日这一天
* * * * 1    表示每周1执行

特殊语法:
/	表示每隔多长时间,比如 */10 * * * * 表示每隔10分钟
*/30 */2 * 1-6 * 表示从1到6月的每天每30分钟然后再隔2小时循环执行
H	表示hash散列
H/10 * * * *  其实时间不固定,步长固定10分钟执行一次,有可能是3,13,23
H (1-30) 2 * * 1-6 周一至周六,每天凌晨2点 (25) 1-30 之内取hash值,执行一次

Jenkins的主动式构建项目

主动式构建(Build periodically):配置周期性进行项目构建,这个是到指定的时间必须触发构建任务,不会受代码是否更变。
在这里插入图片描述
主动式构建(Poll SCM):配置周期性进行项目构建,这个是到指定的时间去gitlab上检查版本是否发生变化,如发生变化触发构建任务,如没有发生变化就不会触发构建任务。
在这里插入图片描述

被动式:使用Gitlab的webhook进程构建,这种方式是通过Jenkins暴露出接口,等待Gitlab中的项目构建来触发webhook然后来请求Jenkins的接口来进行构建。
主动式:使用Jenkins的Poll SCM/Build periodically构建项目是,定时主动去请求gitlab,来实现从gitlab拉取代码,进行构建

使用PollSCM来构建项目(两种构建方式配置都是cron表达式)

  1. 配置Poll SCM(找到项目的配置选项,让PollSCM每分钟执行一次),然后保存

    图中的忽略钩子post-commit是Apache Subversion的功能,这里是使用gitlab所以不需要勾选。

  2. 查看每分钟是否构建(定时检查源码变更,如果有更新就checkout最新code下来,然后执行构建动作。 如果没有更新就不会执行构建)
    在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值