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

相关推荐
程序员杰哥14 小时前
UI自动化测试:Jenkins配置
自动化测试·软件测试·python·测试工具·职场和发展·jenkins·测试用例
wangfenglei12345616 小时前
jenkins搭建docker启动
jenkins
snow@li16 小时前
服务器运维:K3S 下 Jenkins ↔ GitLab 的 CI/CD 闭环 / 访问成功
运维·gitlab·jenkins
qq_349447952 天前
Jenkins如何创建一个只能查看固定项目的账号
运维·jenkins
qq_349447952 天前
阿里云centos7.9系统安装jenkins
服务器·阿里云·jenkins
旧梦星轨3 天前
Git Flow 工作流实践
git·gitee·gitlab·github
旧梦星轨3 天前
Github Flow 与 Gitlab Flow工作流实践解读
gitlab·github
qq_349447954 天前
jenkin节点创建
jenkins
飞翔的熊blabla5 天前
# Webpack 5 + Jenkins 持久化缓存实战:前端构建从 288 秒降到 30 秒>
前端·webpack·jenkins
极小狐6 天前
干掉流水线里的长期密钥:用 OIDC 让 CI/CD 与云以临时凭证对接
microsoft·ci/cd·gitlab·devops·ci·cd·oidc