Для отмены всех запущенных CI/CD линий сборок по апи gitlab можно накатать bash скриптик
# Получаем данные о всех запущенных pipelines
response=$(curl --silent --header "PRIVATE-TOKEN: {{YOU_PRIVATE_TOKEN}}" "https://gitlab.com/api/v4/projects/{{ID_PROJECT}}/pipelines?status=running")
# Проверяем, есть ли запущенные pipelines
if [ -z "$response" ] || [ "$response" == "[]" ]; then
echo "Нет запущенных pipelines"
else
# Получаем все запущенные pipelines
running_pipelines=$(echo "$response" | jq -r '.[].id')
# Cancel all running pipelines
for pipeline_id in $running_pipelines; do
curl --silent --request POST --header "PRIVATE-TOKEN: {{YOU_PRIVATE_TOKEN}}" "https://gitlab.com/api/v4/projects/{{ID_PROJECT}}/pipelines/$pipeline_id/cancel"
echo "Cancelled pipeline ID: $pipeline_id"
done
fi
Для отмены сборочных линий только для текущей ветки:
# Получаем текущую ветку
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
# Получаем данные о всех запущенных pipelines
response=$(curl --silent --header "PRIVATE-TOKEN: {{YOU_PRIVATE_TOKEN}}" "https://gitlab.com/api/v4/projects/{{ID_PROJECT}}/pipelines?status=running")
# Проверяем, есть ли запущенные pipelines
if [ -z "$response" ] || [ "$response" == "[]" ]; then
echo "Нет запущенных pipelines"
else
# Получаем все запущенные pipelines в той же ветке
running_pipelines=$(echo "$response" | jq -r --arg branch "$CURRENT_BRANCH" '.[] | select(.ref == $branch) | .id')
# Cancel all running pipelines in the same branch
for pipeline_id in $running_pipelines; do
curl --silent --request POST --header "PRIVATE-TOKEN: {{YOU_PRIVATE_TOKEN}}" "https://gitlab.com/api/v4/projects/{{ID_PROJECT}}/pipelines/$pipeline_id/cancel"
echo "Cancelled pipeline ID: $pipeline_id"
done
fi
А запустить pipeline CI/CD по апи, с некой своей переменной можно так:
# Проверяем аргумент --clean
RUN_CLEAN=false
for arg in "$@"; do
if [ "$arg" == "--clean" ]; then
RUN_CLEAN=true
break
fi
done
# Отправляем запрос на запуск Pipeline
curl -X POST \
--fail \
-F "token={{YOU_PRIVATE_TOKEN}}" \
-F "ref=$CURRENT_BRANCH" \
-F "variables[RUN_CLEAN]=$RUN_CLEAN" \
https://gitlab.com/api/v4/projects/{{ID_PROJECT}}/trigger/pipeline