场景介绍
- 自己部署的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