首页 > 其他分享 >如何给极狐GitLab 配置 webhook,自动触发 Pipeline?

如何给极狐GitLab 配置 webhook,自动触发 Pipeline?

时间:2024-02-02 17:36:05浏览次数:28  
标签:触发 Pipeline GitLab CI 极狐 milestone issue

本文根据工作中的痛点来举例介绍如何使用极狐 GitLab,让你的日常工作更高效。

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

赶紧看看这篇文章,让你的日常工作更高效。

使用 Gitlab Webhook 触发 Pipeline,打通工作消息通知

关于 A/B 同学的问题,我想可以使用 Webhook 触发 Pipeline,打通工作消息通知的功能来解决他们的烦恼。

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

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

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

如何配置

获取触发器令牌

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

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

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

配置 webhook

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

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

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

整个通知的流水线的实现

  1. 我们可以用自己的喜好和擅长的语言写脚本来完成以下功能:
  • 获取 Webhook 事件请求参数,所有的请求参数都会以文件类型的 CI/CD Variable 形式保存在 CI Job 中,可以使用 cat $TRIGGER_PAYLOAD 或者运行类似的命令来查看。
  • 获取当时的 ON-CALLER;
  • 自定义消息内容,发送消息至 Slack。
  1. 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"

通知消息内容如图

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

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

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

  • SRE 的工作内容也是按照 milestone 来管理日常的工作,周期也是固定的,Manager 可能会忘记 milestone 快结束了,但是程序不会忘记;
  • 作为 SRE,每周都会进行升级,但是我们不能都由一个人来操作创建 issue 并完成部署升级,怎么实现自动排班并创建issue。

如何实现

  1. 设置计划流水线:

  • milestone 结束提醒设置计划流水线触发策略:
    • 变量:$NOTIFY_MILESTONE_END_ISSUE == "1"
    • 时间:
  • 首次提醒: 14号 早上10点 0 10 14 * *
  • 最后提醒: 17 号 18 点最后再友情提示一下:0 18 17 * *
  • 自动化部署saas的 issue创建和提醒:
  • 变量:$NOTIFY_RELEASE == "1"
  • 时间:
  • 每周四上午11点 0 11 * * 4
  1. 编写 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"
  1. 整个通知的流水线的实现,我们可以用自己的喜好和擅长的语言写脚本来完成以下功能:
  • milestone 结束提醒:
  • 获取当前 milestone;
  • 统计所有 sre 的成员的 issue 个数;
  • 自定义消息发送到slack;
  • auto release issue 提醒
  • 获取当时的on-caller;
  • 获取创建 auto release 的issue 模版
  • 创建issue,assign给on-caller
  • 自定义消息内容发送到 slack,艾特 on-caller
  1. Slack 通知消息如下:
  • milestone 结束消息通知:

auto release 消息通知:

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

关注【极狐GitLab】获取更多 DevOps 行业最佳实践。

标签:触发,Pipeline,GitLab,CI,极狐,milestone,issue
From: https://www.cnblogs.com/jihugitlab/p/18003550

相关文章

  • Run a tfx pipeline using kubeflow pipeline
    1.whatiskubeflowpipelinefortfxpipeline?kubeflowpipelineisanochetratoroftfxpipeline,whichrunsonakubernetescluster.LocalDagRunerisanorchetratoroftfxpipeline,whichrunslocal.#runatfxpipelineusgingLocalGagRunnertfx.orc......
  • ml-pipeline-ui of kubeflow pipeline
    1.Creatingapipelineonml-pipeline-uiwebpageissavingthepipelinetodatabasemlpipeline,deleteapipelineonml-ppeline-uiwebpageisdeletingtherecordofthepipelinefromdatabasemlpipeline.2.Createapipeline-runonml-pipeline-uiwebpage......
  • git~issue在github/gitlab中的使用
    本文档适用于github和gitlabissue介绍GitHub中的issue功能是一种用于跟踪项目中任务、缺陷、功能请求和讨论的工具。通过issue,项目成员可以提出问题、报告bug、请求新功能,进行讨论,并且能够将issue与代码变更(比如pullrequest)关联起来,以便更好地进行协作和项目管理。......
  • 极狐GitLab在线发布(数据库)方法论
    前言其他公司——邮件“这周五凌晨6点公司产品发布,请相关的产品、设计、测试、运维、DBA、后端、前端、客服准时就位,6点开始我们准时挂维护页面。“产品公告栏“各位客户,我们产品定于xxxx(本周五)版本发布,维护xx小时,由此带来的不便请谅解,特此通告!“极狐GitLabSRE:昨天发布了。......
  • Pass Artifact between tfx compoents when running with kubeflow pipeline
    WhatisArtifact?AnArtifactisafileordirectoryproducedbyatfxcomponent,whichcanbepassedtoadownstreamcomponent,andthenthedownstreamcomponentcanuseit.HowdoestfxpassanArtifactbetweencomponents?tfxpipelinehasanargument......
  • gitlab备份
    1)Gitlab的备份目录路径设置123456789101112[root@code-server~]#vim/etc/gitlab/gitlab.rbgitlab_rails['manage_backup_path']= truegitlab_rails['backup_path']= "/data/gitlab/backups"    //gitlab备份目录gitlab_rail......
  • mac配置gitlab
    使用ssh方式拉取gitlab仓库代码背景在公司mac电脑上需要将gitee仓库代码迁移到公司gitlab代码仓库中,而我习惯使用ssh方式关联git仓库。我也喜欢使用下面简单粗暴的方式来配置git,之前玩git在window10系统上玩的比较多,各种操作都玩过,比如:创建分支、切换分支、分支代码合并、单文件......
  • GitLab 首席产品官谈 DevSecOps 在 AI 时代的四大趋势
    内容来源:about.gitlab.com作者:GitLab首席产品官DavidDeSantoDevSecOps中的AI变革已经到来,你做好准备了吗?利用AI来加速创新并提高客户价值对于在AI驱动的市场中保持竞争力至关重要。AI在软件研发领域中的作用来到了关键时刻——这将迫使组织及其DevSecOps领导......
  • Gitlab 权鉴相关
    解决思路1、首先登录gitlab服务器执行以下命令:sudogitlab-railsconsole-eproduction 2、通过命令查找,确定用户为“root”#以下这两个命令都可以,随便输入一个user=User.where(id:1).firstuser=User.where(name:"root").first 3、将root用户密码重置为admin123......
  • Walrus 实用教程|Walrus + Gitlab,打通CI/CD 自动化交付!
    Walrusfile是Walrus0.5版本推出的新功能,用户可以通过一个非常简洁的YAML描述应用或基础设施资源的部署配置,然后通过WalrusCLI执行walrusapply或在WalrusUI上进行import,将Walrusfile提交给Walrusserver,由Walrusserver完成对应用或基础设施资源的部署/配置/......