GitLab API使用及如何删除某项目的Pipelines流水线和jobs
创建访问令牌 API Token
PRIVATE-TOKEN获取
登录gitlab 进入 User Settings -> Access Tokens
在这个页面创建一个api令牌,其中范围必须勾选api, read_user;read_repository 可以视个人情况勾选
相关API操作
win10下可直接在cmd窗口中执行curl命令
linux下直接在终端执行curl命令
前置说明:
your-private-token: 为上一步创建的个人访问令牌
YOUR_PROJECT_ID:为对应项目的project id
YOUR_PIPELINE_ID:待删除的流水线id
注意:下方所有命令的 your-private-token、YOUR_PROJECT_ID 和YOUR_PIPELINE_ID均需要根据实际情况修改
查看当前token下的所有Project,即查看自己拥有的project
curl --header "PRIVATE-TOKEN:your-private-token" https://your-gitlab-server/api/v4/projects
查看project的member
curl --header "PRIVATE-TOKEN:your-private-token" "https://your-gitlab-server/api/v4/projects/YOUR_PROJECT_ID/members"
查看某个项目的流水线
curl --header ""PRIVATE-TOKEN:your-private-token" "https://your-gitlab-server/api/v4/projects/YOUR_PROJECT_ID/pipelines/"
// 如:查看86号项目的流水线
curl --header ""PRIVATE-TOKEN:your-private-token" "https://your-gitlab-server/api/v4/projects/86/pipelines/"
删除某个项目的某条CI流水线
curl --header ""PRIVATE-TOKEN:your-private-token" --request "DELETE" "https://your-gitlab-server/api/v4/projects/YOUR_PROJECT_ID/pipelines/YOUR_PIPELINE_ID"
// 如:删除86号项目的308流水线
curl --header ""PRIVATE-TOKEN:your-private-token" --request "DELETE" "https://your-gitlab-server/api/v4/projects/86/pipelines/308"
对于需要批量删除pipelines的情况,可参考
Mass deletion script fixed for the lazy, delete X pipelines from the oldest.
Note: need jq.
#!/bin/bash
set -e
TOKEN=""
PROJECT=""
# How many to delete from the oldest.
PER_PAGE=100
for PIPELINE in $(curl --header "PRIVATE-TOKEN: $TOKEN" "https://gitlab.com/api/v4/projects/$PROJECT/pipelines?per_page=$PER_PAGE&sort=asc" | jq '.[].id') ; do
echo "Deleting pipeline $PIPELINE"
curl --header "PRIVATE-TOKEN: $TOKEN" --request "DELETE" "https://gitlab.com/api/v4/projects/$PROJECT/pipelines/$PIPELINE"
done
注意:
示例链接中的gitlab服务器地址是使用http://your-gitlab-server
还是https://your-gitlab-server
得视实际情况使用,有些公司的gitlab服务器不支持https,有些不支持http
参考链接:How to delete gitlab CI jobs pipelines logs/builds and history