首页 > 其他分享 >5、自动化流水线---触发任务

5、自动化流水线---触发任务

时间:2023-04-21 15:34:22浏览次数:34  
标签:触发 spring GitLab boot helloWorld --- Jenkins 流水线 root

自动化流水线---触发任务

一:周期性构建(日程表格式)
 这是一种cron类型的构建机制,它按照预定义的时间周期启动任务;
◼ 对于期望能够基于代码变更进行触的CI场景来说,周期性构建并非其最佳选项,但对于有些类型的任务,它
却也能够通过精心编排的周期性构建来避免资源冲突;
 Jenkins cron语法遵循Unix cron语法的定义,但在细节上略有差别;
◼ 一项cron的定义包含由空白字符或Tab分隔的5个字段,用于定义周期性的时间点;

5、自动化流水线---触发任务_GitLab通知触发

◼ Jenkins cron还可以使用以下特定字符,一次性指定多个值
◆ * specifies all valid values
◆ M-N specifies a range of values
◆ M-N/X or */X steps by intervals of X through the specified range or whole valid range(以X为步长)
◆ A,B,…,Z enumerates multiple values(逗号分隔的枚举值)
◼ 此外,H也可用于任何字段,它能够在一个时间范围内对项目名称进行散列值计算出一个唯一的偏移量,以
避免所有配置相同cron值的项目在同一时间启动;
◆ 例如 triggers { cron(H(0,30) * * * *) }
在流水线作业中设置如下:

5、自动化流水线---触发任务_GitLab通知触发_02

二:轮询构建(日程表格式)

5、自动化流水线---触发任务_GitLab通知触发_03

三:upstream:由上游作业触发
 若job-x依赖于job-y的执行结果,则称为job-y为job-x的upstream(上游);
 Jenkins自2.22版本开始支持在triggers中定义upstream类型的触发条件;
◼ 当前任务依赖到的upstream任务定义在upstreamProjects参数中,多个任务彼此间以逗号分隔;
◼ 触发条件为upstream的执行状态

5、自动化流水线---触发任务_GitLab通知触发_04

GitLab通知触发
 GitLab通知触发,是指流水线关联的GitLab Repository上的代码出现变更时,由GitLab将相关事件经由
Webhook通知给Jenkins,从而触发Jenkins执行指定Job的构建操作
◼ 避免了pollSCM的频繁轮询依然存在滞后可能性的问题
◼ 依赖于GibLab插件和Git插件

5、自动化流水线---触发任务_GitLab通知触发_05

整合GitLab和Jenkins
 配置要点
◼ 前提:GitLab和Jenkins同在本地网络时,需要以管理员权限设置“外发请求”,启用“允许Webhook和服务
对本地网络的请求”
◆授予Jenkins访问GitLab上仓库中特定用户的代码权限
◆(可选) Jenkins可基于SSH协议访问GitLab API,从而将构建状态推送至GitLab
◼ GitLab API访问授权
◆ (可选)配置GitLab API访问认证(Access Token)及操作权限
◆ 配置Jenkins启用/project端点认证
◆ (可选)配置Jenkins能通过配置的Access Token接入GitLab API
◼ Jenkins pipeline项目的通知授权
◆ 创建流水线任务,选择使用的“GitLab Connection”,并选定使用“Build when a change is pushed to GitLab.”触发器
◆ 而后为构建触发器生成Secret token
◆ 配置GitLab Repository能通过Webhook,基于该Secret Token触发构建
 具体配置过程相关文档
◼ https://docs.gitlab.com/ce/integration/jenkins.html
配置如下:
一:在jenkins上安装Gitlab插件和Generic Webhook Trigger插件

5、自动化流水线---触发任务_GitLab通知触发_06

已安装完毕

5、自动化流水线---触发任务_GitLab通知触发_07

安装完成后,构建的任务上出现
Build when a change is pushed to GitLab. GitLab webhook URL: http://10.0.0.100:8080/project/spring-boot-helloworld(允许对方仓库出现什么事件 如:推送事件、接受合并请求事件)

5、自动化流水线---触发任务_GitLab通知触发_08

不允许随便推送事件,给接口设置TOKEN

5、自动化流水线---触发任务_GitLab通知触发_09

二:配置Gitlab(管理员-设置-网络-出站请求,勾选允许来自 web hooks 和服务对本地网络的请求)

5、自动化流水线---触发任务_GitLab通知触发_10

确保在Gitlab主机上能解析Jenkins的主机名,并在代码仓库上进行设置(webhooks)

5、自动化流水线---触发任务_GitLab通知触发_11

把在jenkins上的url地址和TOKEN复制上去(http://10.0.0.100:8080/project/spring-boot-helloworld)

5、自动化流水线---触发任务_GitLab通知触发_12

5、自动化流水线---触发任务_GitLab通知触发_13

做推送测试

5、自动化流水线---触发任务_GitLab通知触发_14

5、自动化流水线---触发任务_GitLab通知触发_15

在Jenkins的流水线作业查看,由于接收到了Gitlab的推送请求,已完成新一次的构建

5、自动化流水线---触发任务_GitLab通知触发_16

哪个分支变更,就构建哪个分支(安装Git Parameter插件)

5、自动化流水线---触发任务_GitLab通知触发_17

在流水线任务中进行配置-添加参数

5、自动化流水线---触发任务_GitLab通知触发_18

修改代码,进行测试
1、在Gitlab仓库中拉取代码到本地仓库
[root@ubuntu2004 ~]#mkdir jerry
[root@ubuntu2004 ~]#cd jerry/
[root@ubuntu2004 jerry]#git clone http://gitlab.mengfanchao.com/devops/spring-boot-helloWorld.git
正克隆到 'spring-boot-helloWorld'...
Username for 'http://gitlab.mengfanchao.com': root
Password for 'http://[email protected]': 
remote: Enumerating objects: 256, done.
remote: Total 256 (delta 0), reused 0 (delta 0), pack-reused 256
接收对象中: 100% (256/256), 35.06 KiB | 717.00 KiB/s, 完成.
处理 delta 中: 100% (73/73), 完成.

2、进入到代码目录,查看当前所处分支
spring-boot-helloWorld
[root@ubuntu2004 jerry]#cd spring-boot-helloWorld/
[root@ubuntu2004 spring-boot-helloWorld]#ls
deploy  Dockerfile  Jenkinsfile  LICENSE  pom.xml  README.md  rollouts  src
[root@ubuntu2004 spring-boot-helloWorld]#git branch  -l
* main

3、对代码文件进行修改并跟踪提交
[root@ubuntu2004 spring-boot-helloWorld]#vim src/main/java/com/neo/controller/HelloWorldController.java
修改前:return "version 0.9.6!";
修改后:return "version 0.9.7!";

[root@ubuntu2004 spring-boot-helloWorld]#vim pom.xml
修改前:<version>0.9.6-SNAPSHOT</version>
修改后:<version>0.9.7-SNAPSHOT</version>

跟踪
[root@ubuntu2004 spring-boot-helloWorld]#git add .
提交
[root@ubuntu2004 spring-boot-helloWorld]#git commit -m "update v0.9.7"

4、查看文件状态
[root@ubuntu2004 spring-boot-helloWorld]#git status 
位于分支 main
您的分支与上游分支 'origin/main' 一致。

尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git restore <文件>..." 丢弃工作区的改动)
	修改:     pom.xml
	修改:     src/main/java/com/neo/controller/HelloWorldController.java

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

5、跟踪并提交
[root@ubuntu2004 spring-boot-helloWorld]#git config --local user.name jerry
[root@ubuntu2004 spring-boot-helloWorld]#git config --local user.email [email protected]
[root@ubuntu2004 spring-boot-helloWorld]#git add .
[root@ubuntu2004 spring-boot-helloWorld]#git commit -m "update to 0.9.7"
[main 33a86d9] update to 0.9.7
 2 files changed, 2 insertions(+), 2 deletions(-)
 
6、推送到远程仓库
[root@ubuntu2004 spring-boot-helloWorld]#git push origin 
Username for 'http://gitlab.mengfanchao.com': root
Password for 'http://[email protected]': 
枚举对象中: 19, 完成.
对象计数中: 100% (19/19), 完成.
使用 2 个线程进行压缩
压缩对象中: 100% (8/8), 完成.
写入对象中: 100% (10/10), 729 字节 | 364.00 KiB/s, 完成.
总共 10 (差异 3),复用 0 (差异 0)
To http://gitlab.mengfanchao.com/devops/spring-boot-helloWorld.git
   fecc8c2..33a86d9  main -> main
在main分支上会生成事件,并推送给Jenkins,在jenkins上自动触发任务

5、自动化流水线---触发任务_GitLab通知触发_19

5、自动化流水线---触发任务_GitLab通知触发_20

5、自动化流水线---触发任务_GitLab通知触发_21

去客户端访问查看

5、自动化流水线---触发任务_GitLab通知触发_22

不但可以让Gitlab触发Jenkins,反过来,Jenkins也可以在自己构建完之后把流水线执行结果返回头去配置到Gitlab之上作为回馈信息
推送构建状态信息至GitLab
Jenkins也能将流水线上的构建状态结果通过Webhook推送至GitLab进行显示,这需要配置GitLab 
Connection
配置步骤简要说明
◼ 在GitLab上,以仓库所关联的用户生成Access Token,并选择可访问的API
◼ 在Jenkins上,将GitLab生成的Access Token保存为Credential
◼ 在Jenkins的系统配置中,添加GitLab Connection的定义
◼ 在FreeStyle类型的流水线上,选择要使用的GitLab Connection
◼ 在FreeStyle类型的流水线上,添加“构建后操作”
操作如下:
1、在GitLab上,以仓库所关联的用户生成Access Token,并选择可访问的API

(用户-编辑个人资料-访问令牌glpat-V3-GLosxv-9QPRmFpcWq)

5、自动化流水线---触发任务_GitLab通知触发_23

2、在Jenkins上,将GitLab生成的Access Token保存为Credential(系统管理-manager Credential)

5、自动化流水线---触发任务_GitLab通知触发_24

5、自动化流水线---触发任务_GitLab通知触发_25

5、自动化流水线---触发任务_GitLab通知触发_26

3、在Jenkins的系统配置中,添加GitLab Connection的定义

5、自动化流水线---触发任务_GitLab通知触发_27

测试成功后保存

5、自动化流水线---触发任务_GitLab通知触发_28

4、在FreeStyle类型的流水线上,选择要使用的GitLab Connection

5、自动化流水线---触发任务_GitLab通知触发_29

5、在FreeStyle类型的流水线上,添加“构建后操作”

5、自动化流水线---触发任务_GitLab通知触发_30

触发过程:生成feature分支-创建分支合并请求-完成合并-触发相关任务
1、生成并切换到develop分支
[root@ubuntu2004 spring-boot-helloWorld]#git checkout develop 
分支 'develop' 设置为跟踪来自 'origin' 的远程分支 'develop'。
切换到一个新分支 'develop'

2、对文件进行修改
[root@ubuntu2004 spring-boot-helloWorld]#vim pom.xml
修改前:<version>0.9.7-SNAPSHOT</version>
修改后:<version>0.9.8-SNAPSHOT</version>

[root@ubuntu2004 spring-boot-helloWorld]#vim src/main/java/com/neo/controller/HelloWorldController.java
修改前:return "version 0.9.7!";
修改后:return "version 0.9.8!";

跟踪
[root@ubuntu2004 spring-boot-helloWorld]#git add .
提交
[root@ubuntu2004 spring-boot-helloWorld]#git commit -m "update v0.9.8"
[main 33a86d9] update to 0.9.8
 2 files changed, 2 insertions(+), 2 deletions(-)
 
3、推送到远程仓库
[root@ubuntu2004 spring-boot-helloWorld]#git push origin 
Username for 'http://gitlab.mengfanchao.com': root
Password for 'http://[email protected]': 
枚举对象中: 19, 完成.
对象计数中: 100% (19/19), 完成.
使用 2 个线程进行压缩
压缩对象中: 100% (8/8), 完成.
写入对象中: 100% (10/10), 729 字节 | 364.00 KiB/s, 完成.
总共 10 (差异 3),复用 0 (差异 0)
To http://gitlab.mengfanchao.com/devops/spring-boot-helloWorld.git
   fecc8c2..33a86d9  得develop -> decelop
创建合并请求

5、自动化流水线---触发任务_GitLab通知触发_31

5、自动化流水线---触发任务_GitLab通知触发_32

5、自动化流水线---触发任务_GitLab通知触发_33

合并反馈会点赞

5、自动化流水线---触发任务_GitLab通知触发_34

触发分支合并请求,应自动检出变动的分支

5、自动化流水线---触发任务_GitLab通知触发_35

可写为<:>,或者留空

5、自动化流水线---触发任务_GitLab通知触发_36

Jenkins回推效果

5、自动化流水线---触发任务_GitLab通知触发_37

四、Generic Webhook Trigger(通用webhook触发器)
 Generic Webhook Trigger插件
◼ 简称为GWT
◼ 提供的是一种通用的触发机制,它允许直接经
由该插件暴露的API
(<JENKINS_URL>/generic-webhooktrigger/invoke)接收JSON或XML格式的HTTP 
POST请求进行触发
◼ 触发的Jenkins项目则由配置的规则和POST请求
进行定义
◆支持从POST请求的JSONPath和Xpath中提取数据
◆支持从query parameters中提取数据
◆支持从headers中提取数据
 依赖关系
◼ 需要安装Generic Webhook Trigger插件;
◼ 支持白名单
◆系统管理 → 系统配置 → Generic Webhook Trigger
定义白名单

5、自动化流水线---触发任务_GitLab通知触发_38

在流水线作业中配置Generic Webhook Trigger

5、自动化流水线---触发任务_GitLab通知触发_39

通用触发条件

5、自动化流水线---触发任务_GitLab通知触发_40

在Gitlab上生成token信息
[root@ubuntu2004 spring-boot-helloWorld]#openssl rand -base64 20
SUgkhLV7OzrTZ+12khey+sQ4rZc=
粘贴到Jenkins的流水线配置上(也可生成credential,在下面引用)

5、自动化流水线---触发任务_GitLab通知触发_41

对应的打印信息

5、自动化流水线---触发任务_GitLab通知触发_42

手动触发

5、自动化流水线---触发任务_GitLab通知触发_43

指定分支直接触发

5、自动化流水线---触发任务_GitLab通知触发_44

5、自动化流水线---触发任务_GitLab通知触发_45

5、自动化流水线---触发任务_GitLab通知触发_46

Generic Webhook完全可在命令行中进行触发,也可直接在Gitlab上使用
删除原来的webhook,重新进行定义

5、自动化流水线---触发任务_GitLab通知触发_47

5、自动化流水线---触发任务_GitLab通知触发_48

标签:触发,spring,GitLab,boot,helloWorld,---,Jenkins,流水线,root
From: https://blog.51cto.com/mfc001/6213262

相关文章

  • SQL注入漏洞--DVWA
    怎么判断sql注入漏洞呢?后台执行的SQL语句为SELECTfirst_name,last_nameFROMusersWHEREuser_id='$id';($id:用户输入的内容)用户输入的数据为:1'and1=1#这时SQL语句发生变化,在原有查询完成后会判断1=1(这明显是对的),如果判断正确才会有输出[#作用是注释(移除)后续SQL语......
  • 【四二学堂】微服务-SpringBoot+SSM之一
    Idea中NewProject参考:JavaVersion修改成13生成的项目结构如下图:修改目录成以下结构:各文件夹的内容,我们放在下一篇文章里面。......
  • 【汇智学堂】-Hadoop分布式集群安装验证-3(检查YARN)
    在HadoopMaster上启动Firefox浏览器,输入http://master:18088/,检查YARN是否正常,如下图则为正常。......
  • 【汇智学堂】-Hadoop分布式集群安装验证-2(WEB UI查看)
    在HadoopMaster上启动Firefox浏览器,输入http://master:50070/,检查NameNode和DataNode是否正常,如下图则为正常。......
  • SPI-SPI主机硬件片选功能使用说明
    SPI主机硬件片选功能使用说明SPI协议最早的标准,是由摩托罗拉公司制定。在协议使用的过程中,根据实际需求可能会进行一些扩展和修改。在一份由飞思卡尔半导体发布的SPIV4.01版本规范中,对片选引脚做了如下的描述:TheSS/outputfeatureautomaticallydrivestheSS/pinlowduri......
  • vue-input-directive 插件的使用(已兼容vue3.0)
    codepen体验地址github地址安装、引入npminstallvue-input-directive--saveimportVuefrom'vue'importinputValidatefrom'vue-input-directive'Vue.use(inputValidate)1、d-input-max 输入数字限制最大值<el-inputv-d-input-max="99.99"v-......
  • GPT-NER:通过大型语言模型的命名实体识别
    讲在前面,chatgpt出来的时候就想过将其利用在信息抽取方面,后续也发现了不少基于这种大语言模型的信息抽取的论文,比如之前收集过的:https://github.com/cocacola-lab/GPT4IEhttps://github.com/RidongHan/Evaluation-of-ChatGPT-on-Information-Extractionhttps://github.com/cocac......
  • Aras学习笔记 (53) - 根据ID快速找到文件Vault路径
    Step1:首先在对象类File中根据名称找到ID;Step2:右键文件-->Share-->CopyID;Step3:在Console中输入下命令:top.aras.IomInnovator.getFileUrl("[文件ID]",top.aras.Enums.UrlType.SecurityToken)结果如下: ......
  • C# 设置Menustrip提示框的显示 -转载
    设置Menustrip提示框的显示:(1)先在Menustrip的属性中对【ShowItemToolTips】的属性进行设置,设置为true代表要显示提示框,如下图设置: (2)设置ToolStripMenuItem的【AutoToolTip】属性,设置为true代表要显示提示框,如下图设置: (3)设置ToolStripMenuItem的【ToolTipText】属性,设置提示......
  • 7-10 红豆生南国
    有诗云:相思(王维唐)红豆生南国,春来发几枝。愿君多采撷,此物最相思。那么,我们来采红豆吧!假设红豆树是这个样子的:这种红豆树的特点是:每个结点都有一个正整数编号,标在结点内部。结点的编号各不相同。最上方一层结点是 “红豆”(图中红圈所示的5个结点......