基于gitlab API刷新MR的commit的指定status

场景介绍

  • 自己部署的gitlab + Jenkins,并已经设置好联动(如何设置可以在网上很容易搜到)
  • 每个MergeRequest都可以触发多个Jenkins pipeline,pipeline结束后会将状态更新到gitlab这个MR上
  • 希望可以跳过pipeline运行,直接将指定的MR的指定pipeline状态刷新为success

实现

  • 需要获取下列信息,也就是变量赋值

    • GITLAB_URL:gitlab的url,包含前面的http://或者是https://

    • PROJECT_ID:gitlab上为该项目分配的编号(web上项目首页可以找到)

    • GITLAB_ACCESS_TOKEN:该项目Developer以上权限的用户的access_token

    • COMMIT_SHA:一般是MR的最后一次commit的id

    • STATUS_NAME:项目可能关联多个pipeline,每个pipeline对应一个status name,这里是确切的要更新状态的status_name

    • Linux环境下,安装curl

    • 运行下面的命令即可

      curl -X POST
      -H "PRIVATE-TOKEN: {GITLAB_ACCESS_TOKEN}" \ "{GITLAB_URL}/projects/api/v4/{PROJECT_ID}/statuses/{COMMIT_SHA}?state=success&name=${STATUS_NAME}"

  • 状态的值可以被置为:pending/running/success/failed/canceled/skipped

相关推荐
事圆则缓19 小时前
Android 使用 Jenkins 实现 CI/CD,并用 SonarQube 建立质量门禁
android·ci/cd·jenkins
Zhou1411365 天前
CICD_01_持续集成与Jenkins入门
运维·ci/cd·jenkins
大貔貅喝啤酒5 天前
Gitea+Jenkins+Docker 搭建 Node 项目 CI/CD 自动部署完整教程
ci/cd·docker·jenkins·js·gitea
极小狐6 天前
CI 作业里 kubectl 连不上集群?用 Kubernetes Agent 打通部署链路的 7 个步骤
ci/cd·kubernetes·gitlab·devops·k8s部署
guo_wen_qiang6 天前
jenkins流水线参数化配置
运维·docker·容器·jenkins·持续部署
Zhou1411366 天前
Git_02_GitLab协作与CI_CD
git·ci/cd·gitlab
白帽攻防录6 天前
SRC 挖洞:GitLab GraphQL 指令绕过深度复盘,CVE-2026-19478 未授权删项目怎么打穿代码托管平台
网络·网络安全·gitlab·graphql
何中应7 天前
Jenkins 如何给设置公司 Logo
运维·ci/cd·jenkins
何中应7 天前
Jenkins 如何配置工作节点
运维·ci/cd·jenkins
wjjzhbb7 天前
Jenkins到ArgoCD——GitOps持续交付实践
运维·缓存·jenkins·argocd