Comment pouvons-nous configurer gitlab pour ne conserver que les 10 derniers jobs/builds CI et supprimer le reste?
Par exemple, dans Jenkins, nous pouvons configurer le travail pour ne conserver que les dernières générations X.
Je pense que Gitlab ne prend pas en charge cette fonctionnalité. Mais vous pouvez créer cette fonctionnalité vous-même à l'aide de l'API Gitlab et des webhooks.
Lorsque vous poussez pour repo (et que le pipeline a commencé), il déclenchera un webhook qui peut lire votre historique CI via API => vous pouvez supprimer ce que vous voulez.
Voici les documents pour événements de pipeline
Voici les documents pour API de travail
Pour info, j'utilise une solution similaire. J'ai déployé un serveur pour chaque branche (chaque brach a MR). Lorsque MR est fermé, il supprime le serveur déployé. C'est très fiable.
Script de suppression en masse corrigé pour les paresseux, supprimez les pipelines X des plus anciens.
Remarque: besoin de 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
Pour les paresseux, pour développer https://stackoverflow.com/a/55815040/1041691
Obtenez votre PROJECT
et TOKEN
et exécutez-le jusqu'à ce que tous les pipelines soient supprimés
for PIPELINE in $(curl --header "PRIVATE-TOKEN: $TOKEN" "https://gitlab.com/api/v4/projects/$PROJECT/jobs?per_page=100" | jq '.[].pipeline.id') ; do
echo "deleting $PIPELINE"
curl --header "PRIVATE-TOKEN: $TOKEN" --request "DELETE" "https://gitlab.com/api/v4/projects/$PROJECT/pipelines/$PIPELINE"
done