基于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

相关推荐
kaixin_learn_qt_ing1 天前
Jenkins
运维·jenkins
Madison-No72 天前
Jenkins持续集成
运维·ci/cd·jenkins
hanjq_code2 天前
gitlab本地文件 跨分支 忽略改动 不提交
gitlab
极小狐2 天前
极狐GitLab集群高可用方案,多节点架构与故障自愈实践
架构·gitlab·高可用·极狐gitlab
boy快快长大3 天前
【Jenkins】入门学习
运维·学习·jenkins
极小狐3 天前
极狐GitLab主备同步延迟治理,复制滞后监控与优化方法
gitlab·极狐gitlab·geo容灾
oioihoii3 天前
Jenkins自动部署全流程:CentOS 7、GitHub、Gitee、GitLab、Vue+Maven与Webhook
centos·github·jenkins
极小狐3 天前
跨项目流水线报 404 Not Found?CI_JOB_TOKEN 允许名单 9 步排查
ci/cd·gitlab·devops·权限管理·流水线·极狐gitlab·作业令牌
Geek-Chow4 天前
Building and Using a Jenkins Shared Library
jenkins
极小狐4 天前
极狐GitLab双机热备搭建指南,主机备机部署与切换实操
gitlab·高可用·极狐gitlab