当前位置: 首页 > news >正文

持续集成交付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是一个序列化的任务列表,每个任务代表了一个阶段的构建、测试或部署操作。

(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)新建项目

(2)app01项目来跑流水线

(3)修改代码

(4)app01提交

(5)成功

(6)查看日志

(7)新建job库文件

(8)共享库目录

(9)删除app01 ci文件

(10)获取raw格式

(11)保存地址

(12)库改为公共public

(13)组改为公共public

(14)库改为公共public

(15)改git clone

(16)手动跑流水线

(17)提交

(18)成功

(19)查看日志

2.GitLabCI 通过trigger触发流水线

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

(2)添加token

(3)查看cURL触发命令

(4)查看项目ID

(5)postman添加request

(6)修改请求名称

(7)修改类型为post

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

(9)添加2个参数

(10)点击发送

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

(12)成功触发流水线132

(13)显示状态为成功

(14)job显示triggered被触发

(15)查看日志

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

(17)查看项目目录

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

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

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

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

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

(23)app03 的token明文显示不安全,需要修改

(24)app02项目设置CICD

(25)找到变量

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

(27)显示已添加变量

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

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

(30)提交

(31)成功

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

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

(34)查看webhook命令

(35)app02项目设置Webhooks

(36)点击添加

(37)点击Push events

(38)发送成功

(39)显示成功

(40)显示被触发

(41)查看日志

(42)查看传送变量语法

(43)提交代码

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

(45)发送成功

(46)触发流水线154成功

(47)显示成功

(48)查看ciBuild日志

(49)查看ciTriggerTest日志

三、问题

1.项目app02未触发项目app01

(1)问题

(2)原因分析

查看日志,变量获取错误

(3)解决方法

修改变量的引用

修改前:

修改后:

2.GitLab 报502网关错误

(1)报错

(2)原因分析

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

(3)解决方法

修改GitLab配置文件

vim /etc/gitlab/gitlab.rb

重新配置

gitlab-ctl reconfigure

重启

gitlab-ctl restart

查看进程

修改webhook地址

成功:

相关文章:

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

目录 一、理论 1.GitLabCI 二、实验 1.搭建共享库项目 2.GitLabCI 通过trigger触发流水线 三、问题 1.项目app02未触发项目app01 2.GitLab 报502网关错误 一、理论 1.GitLabCI (1) 概念 GitLab CI(Continuous Integration)是一种持续集成工具…...

Java 多线程中的sleep()和wait()方法的区别

Java 多线程中的sleep()和wait()方法的区别 1、相同点 sleep()和wait()都可以暂停线程的执行。 2、不同点 所在类不同 sleep()是Thread类的静态方法。 wait()是Object类的方法。 锁释放不同 sleep()是不释放锁的。 wait()是释放锁的。 用途不同 sleep()常用于一定时间内暂停…...

车载以太网-数据链路层-VLAN

文章目录 车载以太网VLAN(Vehicle Ethernet VLAN)车载以太网VLAN帧格式VLAN帧报文VLAN帧报文示例车载以太网VLAN(Vehicle Ethernet VLAN) 车载以太网VLAN(Vehicle Ethernet VLAN)是一种在车辆网络中使用的虚拟局域网技术。它允许在车载以太网网络中创建多个逻辑网络,从…...

【Vue】filter的用法

上一篇&#xff1a; vue的指令 https://blog.csdn.net/m0_67930426/article/details/134599378?spm1001.2014.3001.5502 本篇所使用指令 v-for v-on v-html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…...

python web项目导包规范

python web项目导包规范 python 内置的模块通过第三方库安装的模块框架自身提供的模块用户自己定义的模块 如&#xff1a; from __future__ import absolute_import, unicode_literalsfrom debug_toolbar.panels import Panelfrom django.utils.translation import ugettext_…...

AtCoder Beginner Contest 330 题解

目录 A - Counting PassesB - Minimize Abs 1C - Minimize Abs 2D - Counting LsE - Mex and Update A - Counting Passes 原题链接 题目描述 给定N个数和一个整数L&#xff0c;输出大于等于L的数的个数。 public static void solve() throws IOException{int n readInt(), m…...

论文速读《DeepFusion: Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection》

概括主要内容 文章《DeepFusion: Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection》提出了两种创新技术&#xff0c;以改善多模态3D检测模型的性能&#xff0c;通过更有效地融合相机和激光雷达传感器数据来提高对象检测的准确性&#xff0c;尤其是在行人检测方面…...

关于前端处理后端轮询的操作 (总结)

使用场景&#xff1a;前端首次发起请求获取数据&#xff0c;若失败则每隔1s发起一次知道成功获取数据为止解决方案&#xff1a; 使用轮询操作&#xff0c;涉及定时器的使用和关闭 &#xff08;使用vue2代码为例) data() {return {pollingResult_en: null, // 处理轮询结果bizI…...

【SpringCloud】设计原则之单一职责与服务拆分

一、设计原则之单一职责 设计原则很重要的一点就是简单&#xff0c;单一职责也就是所谓的专人干专事 一个单元&#xff08;一个类、函数或微服务&#xff09;应该有且只有一个职责 无论如何&#xff0c;一个微服务不应该包含多于一个的职责 职责单一的后果之一就是职责单…...

UDP分片和丢包与TCP效果对比

UDP 分片 与 丢包&#xff0c;UDP 真的比 TCP 高效吗&#xff1f; UDP&#xff08;用户数据报协议&#xff09;和TCP&#xff08;传输控制协议&#xff09;在很多方面都有显著的区别。总体来说&#xff0c;TCP更适合需要可靠传输的应用&#xff0c;例如网页浏览、电子邮件等&a…...

Inport 模块

文章目录 Interpolate datainport 模块存在于模型最顶层Port Dimension 和 Variable-size signal Interpolate data Interpolate data&#xff1a;当将 Workspace 的数据导人模型时, 对没有对应数据点的采样时刻进行线性插值的开关选项。 inport 模块存在于模型最顶层 inpo…...

Deep Learning for Monocular Depth Estimation: A Review.基于深度学习的深度估计

传统的深度估计方法通常是使用双目相机&#xff0c;计算两个2D图像的视差&#xff0c;然后通过立体匹配和三角剖分得到深度图。然而&#xff0c;双目深度估计方法至少需要两个固定的摄像机&#xff0c;当场景的纹理较少或者没有纹理的时候&#xff0c;很难从图像中捕捉足够的特…...

点云从入门到精通技术详解100篇-基于深度学习的稀疏点云障碍物检测(续)

目录 3.1 连续帧点云空间特征融合 3.1.1 点云预处理 3.1.2 地面分割 3.1.3 自适应点云聚类...

使用VSCode+PlatformIO搭建ESP32开发环境

Arduino IDE本来就是为创客们开发的&#xff0c;虽然没代码提示功能&#xff0c;文件的关系也不清晰&#xff0c;函数不能跳转&#xff0c;头文件也打不开&#xff0c;但人家的初衷就是为了简单而生的&#xff1b;但还是有一些同学喜欢高级点的IDE&#xff0c;也没问题&#xf…...

使用flask返回json格式的数据

Flask Flask是一个使用Python编写的轻量级Web框架&#xff0c;它的设计理念是保持简单、灵活和易扩展。它的核心是Werkzeug和Jinja2&#xff0c;并且它本身只提供了非常基础的Web框架功能&#xff0c;例如路由和请求处理等。 使用Flask可以快速创建一个Web应用程序&#xff0c;…...

如何排查java 内存溢出OutOfMemoryError?

当使用Spring Boot进行文件上传时&#xff0c;文件会被读取到内存中进行处理。如果上传的文件较大&#xff0c;会占用大量的内存空间&#xff0c;从而导致内存溢出&#xff08;OutOfMemory&#xff09;问题。以下是一些建议的排查方案&#xff1a; 调整 JVM 内存设置&#xff…...

Prometheus环境搭建和认识

Prometheus 环境搭建 1.prometheus 简介 Prometheus是基于go语言开发的一套开源的监控、报警和时间序列数据库的组合&#xff0c;是由SoundCloud公司开发的开源监控系统&#xff0c;Prometheus于2016年加入CNCF&#xff08;Cloud Native Computing Foundation,云原生计算基金…...

openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数

文章目录 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数130.1 背景信息130.2 GUC参数设置130.3 操作步骤130.4 示例 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数 130.1 背景信息 openGauss提供了多种修改GUC参数的方法&#xff0c;用户可…...

每日OJ题_算法_双指针_力扣11. 盛最多水的容器

力扣11. 盛最多水的容器 11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; 难度 中等 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成…...

数据仓库

一. 各种名词解释 1.1 ODS是什么&#xff1f; ODS层最好理解&#xff0c;基本上就是数据从源表拉过来&#xff0c;进行etl&#xff0c;比如mysql 映射到hive&#xff0c;那么到了hive里面就是ods层。 ODS 全称是 Operational Data Store&#xff0c;操作数据存储.“面向主题的…...

BK3633 Keil 工程中自动化构建与版本管理的进阶配置指南

1. 为什么需要自动化构建与版本管理 在嵌入式开发中&#xff0c;每次手动编译、打包、命名固件都是件费时费力的事情。特别是像BK3633这样的蓝牙芯片项目&#xff0c;往往需要同时维护Debug和Release两个版本。Debug版本用于开发调试&#xff0c;需要保留日志输出和调试信息&am…...

ISP-全链路数据流预览-000005

全链路数据流预览 视频数据从传感器到播放器的完整流转路径&#xff0c;一图掌握核心技术链路V4L2 框架与硬件组件的关系RGB 数据容量远远大于 YUV 数据容量&#xff0c;所以需要转成 YUV MIPI CSI ** **...

WebSocket长连接优化:宠友IM源码中的心跳与断线重连机制

IM系统上线之后&#xff0c;最容易被忽略的一类问题不是发送失败&#xff0c;而是“看起来在线&#xff0c;实际上已经断了”。这种情况用户感知很直接&#xff1a;消息发不出去、收不到、需要反复重启应用。 宠友信息在「宠友IM」源码里&#xff0c;对WebSocket连接这一层做了…...

从零开始构建SaaS多租户架构:SpringBoot + MyBatis-Plus动态数据源实战

1. 为什么选择SpringBoot MyBatis-Plus构建SaaS系统 最近公司要求将现有系统升级为SaaS架构&#xff0c;作为Java技术栈的团队&#xff0c;我们评估了多种方案后选择了SpringBoot MyBatis-Plus组合。这个选择主要基于三个实际考量&#xff1a;首先&#xff0c;SpringBoot的自…...

为什么你的AGI在沙盒里完美,在现实世界中失控?揭开跨模态一致性验证的3重隐性失效机制

第一章&#xff1a;AGI的测试与验证方法 2026奇点智能技术大会(https://ml-summit.org) 通用人工智能&#xff08;AGI&#xff09;的测试与验证远超传统AI系统的评估范式&#xff0c;其核心挑战在于系统需在开放域、跨任务、自适应推理与价值对齐等多维能力上同时满足鲁棒性、…...

基于AXI总线的Cortex-M3软核SoC设计与外设集成

1. Cortex-M3软核与AXI总线基础解析 第一次接触Cortex-M3软核是在三年前的一个物联网安全项目&#xff0c;当时需要在FPGA上实现一个轻量级加密处理器。和大多数嵌入式开发者一样&#xff0c;我之前主要使用现成的STM32系列芯片&#xff0c;直到真正动手在Vivado里搭建M3软核&a…...

突破性开源机器人框架:3大创新模块重构智能机械臂开发体验

突破性开源机器人框架&#xff1a;3大创新模块重构智能机械臂开发体验 【免费下载链接】lerobot &#x1f917; LeRobot: Making AI for Robotics more accessible with end-to-end learning 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot 在机器人技术快速…...

深入pdf.js源码:从‘传参’看C#如何灵活控制PDF渲染(url vs data流实战)

深入pdf.js源码&#xff1a;从‘传参’看C#如何灵活控制PDF渲染&#xff08;url vs data流实战&#xff09; 在C#全栈开发中&#xff0c;PDF文件的动态渲染一直是业务系统的高频需求。当基础功能无法满足复杂场景时&#xff0c;开发者往往陷入两难&#xff1a;要么依赖现成解决…...

C++项目智能助手:Phi-4-mini-reasoning辅助代码重构与设计模式应用

C项目智能助手&#xff1a;Phi-4-mini-reasoning辅助代码重构与设计模式应用 1. 引言&#xff1a;大型C项目的维护挑战 维护一个大型C项目就像在管理一座不断扩建的城市。随着代码库规模的增长&#xff0c;各种"城市病"开始显现&#xff1a;交通拥堵&#xff08;性…...

用手机学Java编程?AIDE保姆级入门指南,从零到第一个小游戏

用手机学Java编程&#xff1f;AIDE保姆级入门指南&#xff0c;从零到第一个小游戏 地铁上掏出手机刷短视频&#xff1f;不如试试用碎片时间写代码。AIDE这款Android平台的集成开发环境&#xff0c;让Java学习摆脱了电脑束缚——你完全可以在通勤路上完成从"Hello World&qu…...