Ija*_*han 4 gitlab gitlab-ci gitlab-ci-runner
我们如何配置gitlab以仅保留最后10个CI作业/内部版本,并继续删除其余部分?
例如,在Jenkins中,我们可以将作业配置为仅保留最后的X版本。
Rou*_*tor 19
从Gitlab版本11.6开始,现在仅可以通过API删除管道(仅适用于维护者)。
你需要:
id项目的pipeline_id管道的你想删除。使用项目id: 1和文档中的curl的示例pipeline_id: 4:
curl --header "PRIVATE-TOKEN: <your_access_token>" --request "DELETE" "https://gitlab.example.com/api/v4/projects/1/pipelines/46"
Run Code Online (Sandbox Code Playgroud)
文档在这里
pri*_*ngi 18
根据之前的答案,修改了脚本以检索多个项目,并为每个项目删除早于配置日期的管道。
#!/bin/bash
set -e
TOKEN=""
# How many to delete from the oldest.
PER_PAGE=100
UPDATED_BEFORE=2021-02-01T00:00:00Z
GITLAB_URL=
while : ; do
COUNTER=0
for PROJECT in $(curl -s --header "PRIVATE-TOKEN: $TOKEN" "$GITLAB_URL/api/v4/projects?per_page=$PER_PAGE" | jq '.[].id') ; do
echo "Deleting in project $PROJECT"
for PIPELINE in $(curl -s --header "PRIVATE-TOKEN: $TOKEN" "$GITLAB_URL/api/v4/projects/$PROJECT/pipelines?per_page=$PER_PAGE&sort=asc&updated_before=$UPDATED_BEFORE" | jq '.[].id') ; do
echo "Deleting pipeline $PIPELINE"
curl --header "PRIVATE-TOKEN: $TOKEN" --request "DELETE" "$GITLAB_URL/api/v4/projects/$PROJECT/pipelines/$PIPELINE"
(( COUNTER++ )) || true
done
done
echo $COUNTER
if [[ "$COUNTER" -le 0 ]]; then
break;
fi
done
Run Code Online (Sandbox Code Playgroud)
小智 10
批量删除脚本修复了惰性,从最旧的删除 X 管道。
注意:需要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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8420 次 |
| 最近记录: |