Jenkins(4)超时机制、运行命令(shell)、自动构建 和 邮件通知

本文详细介绍了Jenkins中如何设置超时机制、优化命令运行、清理PreSteps、配置自动构建与git钩子,包括快照依赖构建、定时构建和GitHub触发构建。还涵盖了邮件通知配置及项目管理的最佳实践。
摘要由CSDN通过智能技术生成

publish超时机制

在配置界面,可以去设置超时,如下
在这里插入图片描述
可以在这里设置超时
在这里插入图片描述

运行命令优化

还有一个地方需要注意,如下,命令可能在服务器上没有运行成功
在这里插入图片描述
比如,我在服务器上直接运行这行命令,如下
在这里插入图片描述

我们会发现,运行是会失败的

所以,我们需要将这一行命令进行优化,如下:将日志输出到mylog.log文件里面

nohup java -jar /root/xxoo/demo*.jar >mylog.log 2>&1 &

命令说明:博客
将其修改为下面的内容
在这里插入图片描述

Pre Steps设置(运行shell脚本)

之前,我们需要在每次启动前都去kill掉之前的进程,现在可以在Pre Steps里面去设置启动前去清理进程等内容

进入任务的配置。如下,选择Pre Steps
在这里插入图片描述

在这里,我们在运行项目前面,将之前运行的jar包删除掉,进程关闭掉,将之前运行的数据和痕迹删除掉

首先,点击选项,选择红框内容
在这里插入图片描述
过后,会出现下面的内容
在这里插入图片描述
在红框里面,其已经自动选择了之前我们设置的目标服务器地址,现在我们便需要在下面的Exec command里面输入一些命令,由于命令有多行,所以在这里我们便需要去写一些shell脚本,如下:

脚本内容为:

#!/bin/bash
#删除历史数据
rm -rf xxoo

#获取传入的参数,
appname=$1
echo "arg:$1"

#获取正在运行的jar包pid
pid=`ps -ef | grep $1 | grep 'java -jar' | awk '{printf $2}'`

echo $pid

#如果pid为空,提示一下,否则,执行kill命令
if [ -z $pid ];
#使用-z 做空值判断
	#为空的话
	then
		echo "$appname not started"
	else
		kill -9 $pid
		echo "$appname stoping...."

# 精确匹配
check=`ps -ef | grep -w $pid | grep java`
if [ -z $check ];
	then
		echo "$appname pid:$pid is stop"
	else
		echo "$appname stop failed"

fi

fi
  1. 删除历史数据:

  2. 获取现在正在运行的pid
    在这里插入图片描述

  3. 获取传入的参数
    在这里插入图片描述
    返回之前的Pre Steps ,去配置参数,如下:
    在这里插入图片描述
    保存完之后,进行运行,如下:
    在这里插入图片描述
    这样在运行之前,会将之前的痕迹给删除掉

注:现在每次提交了(Push)代码后,过后再在git上将代码合并到Jenkins上配置的分支上,最后重新运行一下构建,这样提交的代码才会正式生效

自动构建

简单说明

那么,如果想要在这个过程中完成自动化的构建,即只要我提交了代码,将代码合并到对应的分支,Jenkins便去完成自动化的构建,不需要再去点一下构建,这种功能的实现可以使用git的钩子机制

  1. 钩子机制:一旦git上提交了代码,就会去回调一下Jenkins,Jenkins再去完成构建

进入之前项目的配置,选择“构建触发器”,如下:在这里可以去选择在什么条件下去构建
在这里插入图片描述
将“触发远程构建XX”这个选项勾选上,然后会出现需要输入的一个框,在这个里面去配置一个url,去进行调用
在这里插入图片描述
上面标记的url,需要在git上进行配置,表示代码一旦提交,这样git那边便会去向这个url去发起回调的钩子去,如下
在这里插入图片描述

如上,git上有一个事件机制,去进行回调Jenkins上的一个接口,去进行构建

完成自动构建

提交代码到git仓库后去进行自动构建

首先,我们需要在Jenkins上进行配置

进入任务的配置中,选择“构建触发器”,将“触发远程构建XXX”勾选上,配置一个身份令牌,下面提示的url便是在git上需要使用的url

  1. JENKINS_URL:当前Jenkins的地址(192.168.44.101)
  2. TOKEN_NAME:身份令牌,即上面输入框中输入的内容(123123)
    在这里插入图片描述
    对这个url进行演示,
第一步:简单请求(登陆情况下)
  1. 如果还没有对上面端的url进行请求,Jenkins上面的任务队列还是空闲的,如下:
    在这里插入图片描述
  2. 发起请求后,在Jenkins的页面的构建队列便出来了
    在这里插入图片描述
  3. 这种情况是因为当前浏览器已经是登陆的情况,所以才能正确的发起请求,如果换一个浏览器或者是PostMan去请求的话,是会报错的(需要登陆)
    新浏览器
    在这里插入图片描述
    postman
    在这里插入图片描述
    那么为了解决这个问题,便需要去安装一个插件
第二步:安装插件使未登陆情况下还可以去发起请求

按以前的步骤,进入插件管理里面,安装下面的插件
在这里插入图片描述
勾选上后,进行安装,实现免登陆
在这里插入图片描述

安装上后,查看其文档,后面去发起请求的话,便需要去调用下面的接口:buildByToken/build>job=first&token=xxx
在这里插入图片描述
现在使用postman发起请求
在这里插入图片描述

现在便可以匿名的去访问了

第三步:配置gitlab

进入对应项目的设置里面,点击webhooks
在这里插入图片描述
在其右边进行对应的配置

在这里插入图片描述
在这里插入图片描述
过后,点击Add webhook

有可能会出现下面的报错
在这里插入图片描述
这个并不是地址报错了,而是这个请求不支持,
解决如下

  1. 切换管理员的身份
    在这里插入图片描述
  2. 配置网络的一些参数,按下面的配置,过后保存更改
    在这里插入图片描述
  3. 按之前的步骤重新去添加webhook即可

添加上后,该页面的下面便会出现如下的内容
在这里插入图片描述

测试

  1. 发起push请求,结果如下
    在这里插入图片描述

  2. 再次发起一个merge请求
    在这里插入图片描述
    在这里插入图片描述

  3. 上面的测试都成功了,下面便正式去提交代码,通过测试,结果是没有问题的(测试过程便不展示了),反正就是本地的idea等工具进行commit后,便会自动去启动,和上面的测试结果都差不多

    代码commit后,内容还是之前的,因为代码是还没有合并的,需要再去合并后,才是最新的结果

这里便有一个问题,将代码commit,push的时候,会去创建一次任务;在合并分支的过程中还会去创建一次任务,合并成功后,需要admin去进行真正的合并,这里又会创建一次任务;一共创建了三次任务

这里便比较重复和多余

常见的几种构建方式(如在git服务器上进行合并时去做自动化的构建)

快照依赖构建

有下面几种构建方式:

  1. 快照依赖构建/Build whenever a SNAPSHOT dependency is built
    • 当依赖的快照被构建时执行本job
    • 这个需要在下面的界面进行配置,该选项勾选上的意思是:当当前这个job里依赖了其他的SNAPSHOT(快照),当这个SNAPSHOT发生变化时,会把当前这个项目一起构建一下
      在这里插入图片描述
触发远程构建
  1. 触发远程构建 (例如,使用脚本)
    • 远程调用本job的restapi时执行本job
    • 这个已经在上面演示过了,这里便不继续说明了
job依赖构建
  1. job依赖构建/Build after other projects are built
    • 当依赖的job被构建时执行本job

在这里插入图片描述

定时构建
  1. 定时构建/Build periodically
    • 使用cron表达式定时构建本job

在这里插入图片描述

向GitHub提交代码时触发
  1. 向GitHub提交代码时触发Jenkins自动构建/GitHub hook trigger for GITScm polling
    • Github-WebHook出发时构建本job

将项目关联到GitHub上,与之前关联gitlab有点类似
在这里插入图片描述

定期检查代码变更
  1. 定期检查代码变更/Poll SCM
    • 使用cron表达式定时检查代码变更,变更后构建本job

这个是Jenkins去主动发起请求,去检查
在这里插入图片描述

corn表达式:博客

邮件通知

当项目构建失败或出问题了,去通知相关的人员

第一步:配置邮箱服务器

在这里使用163的SMTP服务器,作为发件的邮箱
在这里插入图片描述
将上面的密码保存下来

在这里,使用QQ邮箱作为收件邮箱

第二步:在Jenkins里面配置

第一步:进入配置界面

在这里插入图片描述
在这里插入图片描述

第二步:配置Jenkins Location
在这里插入图片描述
第三步:配置Extended E-mail Notification (这是一种比较个性化的通知,在这里可以去配置触发了什么事件才会去进行发送邮件)

  1. 配置服务器地址
    在这里插入图片描述
  2. 添加凭证
    在这里插入图片描述
    填入账号密码(密码是之前获取到的凭证,并不是登陆的密码)
    在这里插入图片描述
  3. 下面还有一些其他的个性化的配置,里面有选项可以去设置邮件的模板等
    在这里插入图片描述
  4. 事件触发器,当发生勾选上的事件后,才去发送邮件
    在这里插入图片描述

第四步:配置(这是一种系统的通知,当一种比较严重的问题出现时,才会发送邮件),这里的配置与之前的配置差不多

在这里插入图片描述

第三步:测试发送

配置完成后,可以进行测试
在这里插入图片描述
收到的邮件
在这里插入图片描述
如果没有发送正确,可以看上面的日志

第四步:设置用户组

在这里去设置一下用户组的内容,这里发邮件的动作便会往这些用户进行发送
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

?abc!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值