Запуск и отмена запущенных сборочных линий на Gitlab по апи pipelines

Для отмены всех запущенных 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

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *