持续集成交付CICD:GitLabCI 通过trigger触发流水线

目录

一、理论

1.GitLabCI 

二、实验

1.搭建共享库项目

2.GitLabCI 通过trigger触发流水线

三、问题

1.项目app02未触发项目app01

2.GitLab 报502网关错误


一、理论

1.GitLabCI 

(1) 概念

 GitLab CI(Continuous Integration)是一种持续集成工具,它可以帮助开发团队在代码提交后自动构建、测试和部署项目。GitLab CI通过Pipeline(流水线)来实现这些功能。Pipeline是一个序列化的任务列表,每个任务代表了一个阶段的构建、测试或部署操作。

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第1张图片

(2)特点

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第2张图片

GitLabCI Pipeline的主要特点包括:

1) 阶段(Stages):Pipeline由一个或多个阶段组成,每个阶段表示一个构建、测试或部署环节。阶段按照顺序执行,每个阶段完成后,才会继续执行下一个阶段。

2) 任务(Jobs):任务是Pipeline中的一个基本单元,代表一个阶段的某个操作。任务可以包括构建、测试、部署等环节。同一个阶段可以有多个任务,这些任务会并行执行。

3) 触发器(Triggers):Pipeline的触发器用于指定在什么情况下启动Pipeline。例如,可以设置Pipeline在代码提交、合并请求或标签添加等事件触发时自动启动。

4) 配置(Configuration):Pipeline的配置包括了一系列参数,如构建服务器、运行器、标签等。这些配置可以在GitLab CI的配置文件(如`.gitlab-ci.yml`)中进行设置。

5) 运行器(Runners):运行器是GitLab CI的实际执行者,它负责执行Pipeline中的任务。运行器可以在不同的环境中部署,如本地、云平台或容器等。

6) 代理(Agents):代理是运行在运行器上的软件,用于与GitLab CI服务器通信。代理可以执行GitLab CI服务器发布的命令,如构建、测试等。

(3)目标
通过GitLabCI Pipeline,开发团队可以实现自动化的工作流,提高项目开发的效率和质量。当代码提交后,GitLab CI会自动触发Pipeline,依次执行各个阶段的任务,直至项目构建、测试和部署完成。这有助于及时发现和修复代码问题,确保项目的稳定性和可靠性。

二、实验

1.搭建共享库项目

(1)新建项目

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第3张图片

(2)app01项目来跑流水线

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第4张图片

(3)修改代码

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第5张图片

(4)app01提交

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第6张图片

(5)成功

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第7张图片

(6)查看日志

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第8张图片

(7)新建job库文件

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第9张图片

(8)共享库目录

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第10张图片

(9)删除app01 ci文件

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第11张图片

(10)获取raw格式

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第12张图片

(11)保存地址持续集成交付CICD:GitLabCI 通过trigger触发流水线_第13张图片

(12)库改为公共public

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第14张图片

(13)组改为公共public

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第15张图片

(14)库改为公共public

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第16张图片

(15)改git clone

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第17张图片

(16)手动跑流水线

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第18张图片

(17)提交

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第19张图片

(18)成功

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第20张图片

(19)查看日志

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第21张图片

2.GitLabCI 通过trigger触发流水线

(1)进入trigger触发界面配置

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第22张图片

(2)添加token

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第23张图片

(3)查看cURL触发命令

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第24张图片

(4)查看项目ID

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第25张图片

(5)postman添加request

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第26张图片

(6)修改请求名称

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第27张图片

(7)修改类型为post

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第28张图片

(8)添加之前获取的RAW地址

(9)添加2个参数

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第29张图片

(10)点击发送

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第30张图片

(11)查看此时最后一个流水线是131

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第31张图片

(12)成功触发流水线132

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第32张图片

(13)显示状态为成功

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第33张图片

(14)job显示triggered被触发

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第34张图片

(15)查看日志

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第35张图片

(16)查看流水线触发命令

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第36张图片

(17)查看项目目录

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第37张图片

(18)提交,用项目app02 去触发app01

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第38张图片

(19)项目app02已触发app01,并睡眠100秒

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第39张图片

(20)睡眠结束显示都已完成

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第40张图片

(21)查看app02 的流水线133日志

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第41张图片

(22)查看app01 的流水线134日志

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第42张图片(23)app03 的token明文显示不安全,需要修改

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第43张图片

(24)app02项目设置CICD

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第44张图片

(25)找到变量

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第45张图片

(26)添加变量并选择加密

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第46张图片

(27)显示已添加变量

(28)添加变量,减少睡眠时间

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第47张图片

(29)查看此时的流水线,app01为134,app02为135

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第48张图片

(30)提交

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第49张图片

(31)成功

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第50张图片

(32)查看app02 的流水线136日志

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第51张图片

(33)查看app021的流水线137日志

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第52张图片

(34)查看webhook命令

(35)app02项目设置Webhooks

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第53张图片

(36)点击添加

(37)点击Push events

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第54张图片

(38)发送成功

(39)显示成功

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第55张图片

(40)显示被触发

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第56张图片

(41)查看日志

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第57张图片

(42)查看传送变量语法

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第58张图片

(43)提交代码

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第59张图片

(44)postman添加变量重新触发

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第60张图片

(45)发送成功

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第61张图片

(46)触发流水线154成功

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第62张图片

(47)显示成功

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第63张图片

(48)查看ciBuild日志

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第64张图片

(49)查看ciTriggerTest日志

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第65张图片

三、问题

1.项目app02未触发项目app01

(1)问题

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第66张图片

(2)原因分析

查看日志,变量获取错误

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第67张图片

(3)解决方法

修改变量的引用

修改前:

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第68张图片

修改后:

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第69张图片

2.GitLab 报502网关错误

(1)报错

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第70张图片

(2)原因分析

webhook地址格式引用错误,发起大量无效请求,造成服务宕机

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第71张图片

(3)解决方法

修改GitLab配置文件

vim /etc/gitlab/gitlab.rb

重新配置

gitlab-ctl reconfigure

重启

gitlab-ctl restart

查看进程

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第72张图片

修改webhook地址

持续集成交付CICD:GitLabCI 通过trigger触发流水线_第73张图片

成功:

你可能感兴趣的:(持续集成交付CICD,ci/cd,github,git)