解锁极狐GitLab 自动化功能:Webhook 触发 Pipeline 与计划流水线

news2024/12/29 10:34:09

本文来自:

杨洪丽 极狐GitLab 高级网站可靠性工程师(SRE)

只使用极狐GitLab 存放代码? 那你就 OUT 啦!

如果你也遇到了如图 A / B / C / D 各位同学的烦恼,不要错过这篇能够让你日常工作更高效的内容。

使用极狐GitLab Webhook 触发 Pipeline,打通工作消息通知


关于 A 和 B 同学的烦恼,可以使用 Webhook 触发 Pipeline,打通工作消息通知 的功能来解决。

众所周知,极狐(GitLab) 采用远程办公工作模式,必然有许多需要协同处理的工作,这些工作当然是采用极狐GitLab 自带的 issue 提交到协同方。

关于需要 SRE 协同处理的工作,目前是在 Teamwork 中创建 issue,里面有模板,大家可以根据自己的需求填写。

紧急❗❗或一般事件也无需担心该 issue assign 给谁,因为对于 SRE 来说,他们有 on-call 的工作流程,所以我们会由 on-call 的同事来进行响应和处理。

1. 如何配置

获取触发器令牌

首先,需要选择一个 Project,新建或者现有项目都行。根据下面步骤获取 Webhook 触发令牌 👇

设置 → CI/CD → 流水线触发器 → 添加触发器 → 复制触发令牌。

注: 在上述配置页面也会有使用 webhook 配置的 url ,可直接复制替换令牌使用。

配置 webhook

设置→ Webhooks → 选择想要触发 Webhook 的事件进行勾选。

如当前我们需要的是当有新的 issue 创建时触发该 Pipeline。

注:其中 URL 为上述获取 trigger 令牌时复制的URL。

2. 整个通知流水线的实现

1. 我们可以用自己的喜好和擅长的语言写脚本来完成以下功能:

  • 获取 Webhook 事件请求参数,所有请求参数都会以文件类型的 CI/CD Variable 形式保存在 CI Job 中,可以使用 cat $TRIGGER_PAYLOAD 或者运行类似的命令来查看;

  • 获取当时的 On-caller;

  • 自定义消息内容,发送消息至 Slack。

2. CI Job 文件配置,设置只有 trigger  时才执行此 Job:

notify-sre:
  stage: notify-sre
  script:
    - chmod +x scripts/***.py
    - export TRIGGER_PAYLOAD=`cat $TRIGGER_PAYLOAD`
    - python3 scripts/***.py
  only:
    refs:
      - triggers
    variables:
      - $ISSUE_WEBHOOK == "true"

3. 实现效果

通知消息内容如图:

这样,既解决了 A  同学的没法及时响应,也解决了 B 同学的不知道 assign 给谁的问题。

使用极狐 GitLab 计划流水线,打通工作消息通知


C 和 D 同学的问题,既然是机械式的工作,那我们可以设置定时任务去触发流水线来完成需要手动处理的工作

  • SRE 按照 Milestone 来管理日常的工作,周期是固定的,Manager 可能会忘记 Milestone 快结束了,但是程序不会忘记;

  • 作为 SRE,每周都会进行升级,如果都由一个人来操作创建 issue 并完成部署升级,效率可想而知。极狐GitLab 可以帮助你实现自动排班并创建 issue。

1. 如何设置

设置计划流水线

1. Milestone 结束提醒设置计划流水线触发策略:

  • 变量$NOTIFY_MILESTONE_END_ISSUE == "1"

  • 时间:

    首次提醒:14 号早上 10 点 0 10 14 * *

    最后提醒:17 号 18 点最后再友情提示一下:0 18 17 * *

2. 自动化部署 SaaS 的 issue 创建和提醒:

  • 变量$NOTIFY_RELEASE == "1"

  • 时间:每周四上午 11 点 0 11 * * 4

编写 CI yml

  • 设置 CI_PIPELINE_SOURCE 为 schedule;

  • 特定 variable 执行特定的 job。

image: ****:1.0

stages:
  - notify_sre

milestone_issue:
  stage: notify_sre
  script:
    - chmod +x scripts/1***.py
    - python3 scripts/1.py
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule" && $NOTIFY_MILESTONE_END_ISSUE == "1"

release-saas:
  stage: notify_sre
  script:
    - chmod +x scripts/2.py
    - python3 scripts/2.py
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule" && $NOTIFY_RELEASE == "1"

2. 整个通知流水线的实现

我们可以用自己的喜好和擅长的语言写脚本来完成以下功能

  • Milestone 结束提醒

    获取当前 Milestone;

    统计所有 SRE 成员的 issue 个数;

    自定义消息发送到 Slack。

  • Auto release issue 提醒

    获取当时的 On-caller;

    获取创建 Auto release 的 issue 模版;

    创建 issue,Assign 给 On-caller;

    自定义消息内容发送到 Slack,@ On-caller。

3. 实现效果

Slack 通知消息如下:

  • Milestone 结束消息通知 👇

  • Auto release 消息通知 👇

以上只是使用极狐 GitLab 的一小部分自动化功能,极狐 GitLab 给开发者或运维人员都提供了非常大的空间来实现各自需要的自动化工作流,只需掌握一些简单的编程技巧就能实现丰富多彩的结果,期待你的探索与分享。

参考


  1. Slack 通知服务配置

  2. 消息变量

  3. 计划流水线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JSON格式店铺商品列表api

对于做竟店分析来说,首先要知道店铺有哪些商品,店铺宝贝列表则提供了这样的入口,可以查看该店铺的所有宝贝,也可以通过关键词全局搜索来获取店铺宝贝,但搜索会夹带这很多推荐的结果在里面,会比较混乱。 淘宝…

Python语言零基础入门教程(二)

Python 变量类型 变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变…

2023年不良资产项目尽调研究报告

第一章 不良资产的尽调方法 1.1 档案查阅 阅档是尽职调查工作的第一步也是最基础的环节。阅档过程是对资产进行了解的过程,阅档需要判断债权是否具有瑕疵,担保是否继续有效,初步了解各类资产所含的法律关系、状态、权益等。 通过查阅项目卷…

AI人工智能方向

AI人工智能方向 图像CV 图像处理,犬类识别,场景文字识别,人脸算法,图像增强,计算机影像,车型识别,物体检测,黄色图片识别,目标检测API文档Logo检测使用手册&#xff0c…

【数字孪生百科】每周认识一个数字孪生要素 —— 气泡图(Bubble Chart)

简介气泡图(Bubble Chart)是一种多变量的图片,是散点图的一种变体,气泡图其实是在散点图的基础上进行升级改造的,在原有的以横纵坐标为变量的基础上,引入第三个变量,用气泡的大小来表示&#xf…

Lesson 5. 分类模型决策边界与模型评估指标(上)

文章目录一、决策边界(Decision Boundary)基本概念与用途1. 决策边界基本概念与绘制方法2. 通过决策边界观察模型性能3. 逻辑回归决策边界与模型可解释性二、逻辑回归决策边界绘制与使用方法1. 定义决策边界绘制函数2. 决策边界绘制3. 逻辑回归决策边界与…

3、Maven——Maven创建java web工程,IDEA更改XML版本、Maven Search插件的安装与使用

目录 一、Maven创建java web工程 二、Maven创建java web项目的结构 1、添加项目目录 2、web.xml配置处理报错 三、IDEA更改XML版本 四、Maven Search插件的安装与使用 1、Maven Search的安装 2、Maven Search的使用 一、Maven创建java web工程 创建Empty Project空工程…

【U8+】用友U8试算UFO报表后,显示#公式错误;并且函数向导中没有用友账务函数。

【问题描述】 使用用友U816.1软件的时候, 打开UFO报表,计算资产负债表后,显示【#公式错误】。 【排查过程】 开始以为是选择的报表模板文件有问题,将其文件发送到其他U8客户端电脑上,操作正常。 那么可以认为报表模板…

java vector 类

目录 一.前言 1.1vector简介 1.1.1java Collection下的子类图 1.1..2 介绍 1.1.3Vector类详细规则 1.2Vector与ArrayList的区别 二.Vector的方法 三.代码示例(demo) 一.前言 1.1vector简介 1.1.1java Collection下的子类图 1.1..2 介绍 Vector类 是在 java 中可以实现…

从0到1一步一步玩转openEuler--02 openEuler操作系统的安装

2 openEuler操作系统的安装 2.1 openEuler操作系统的安装流程 2.2 openEuler操作系统的安装详细步骤 本次介绍 openEuler 22.03-LTS 基于 X86 架构的安装。 2.2.1 下载地址 官网下载地址:https://www.openeuler.org/zh/download/ 根据你的实际需求选择适合架构…

提取游戏《碧蓝档案》(Blue Archive)内的素材

实际上你游素材直接去根目录下找就行,唯一需要处理的可能就是bgm(格式均为ogg),用格式工厂或者你下个VLC都行。 使用方法:一根usb数据线,一台电脑,一部手机 目录 游戏目录位置 附录 更新&a…

SpringBean生命周期

IOC 控制反转 既然叫反转,肯定就有正转,正转其实就是对象去找实例,而反转就反过来了嘛,让实例来找对象通过容器; DI 依赖注入 通过容器注入了bean对象,而且这个过程是自动化的,也就是说容器…

计算机视觉

什么是计算机视觉? 计算机视觉是人工智能(AI)的一个领域,它使计算机和系统能够从数字图像、视频和其他视觉输入中提取有意义的信息,并根据该信息采取行动或提出建议。如果AI使计算机能够思考,那么计算机视…

webservice接口与HTTP接口学习笔记一、webservice 的概念

webservice接口与HTTP接口学习笔记一、webservice 的概念 目录:导读 一、webservice 的概念 二、webservice接口测试 三、HTTP接口 四、HTTP协议结构 一、webservice 的概念 Web 是使应用程序可以与平台和编程语言无关的方式进行相互通信的一项技术。Web 服务…

关于获取两数相除求百分比,浮点数或整数-相乘,相除-但余数需保留小数点不能有doble继承,应该使用BigDecimal进行四舍五入

int total 3; int finished 2; 类似于这种两数向除---需要将其转化为BigDecimal,利用其函数的方法相除,并用 BigDecimal类型接收结果。 int total 3 int finished 2; BigDecimal result BigDecimal.valueOf(finished).divide(BigDecimal.valueO…

function_url构造函数

目录URL构造函数作用语法返回值构造函数的特定方法URL.createObjectURLURL.revokeObjectURL应用[1]获取url携带参数[2]创建本地url[3]为每个文件生成一个uuidURL构造函数 作用 创建并返回指定url对象 语法 new URL(url,[base])url(必填): 若是rl 是相对 URL,则会…

操作系统简介

坚持看完,结尾有思维导图总结 这里写目录标题概述冯诺依曼体系结构操作系统简介总结概述 本文先介绍冯诺依曼体系结构,并且举了几个例子进行理解,随后粗略介绍操作系统功能,并且为进程的理解打下基础 冯诺依曼体系结构 首先上一…

Python入门第一课——Python起步安装、Sublime Text安装教程,环境配置

Python入门第一课——Python起步安装、Sublime Text文本编辑器1 Python简介2 Python安装2.1 下载安装包2.2 开始安装Python3 Python起步——安装编辑器Sublime Text3.1 Sublime Text简介3.2 Sublime Text安装安装包打开文件创建快捷方式3.3 打开sublime text3.4 第一个程序&…

LeetCode 刷题系列 -- 110. 平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root [3,9,20,null,null,15,7]输出:true示例…

Lombok

Lombok概述Lombok插件安装Lombok依赖注解SetterGetterToStringEqualsAndHashCodeNonNull构造方法相关注解NoArgsConstructorRequiredArgsConstructorAllArgsConstructorDataBuilderLogCleanupSneakyThrows概述 LomBok可以通过注解,帮助开发人员消除JAVA中尤其是POJ…