Какие операции можно совершать с Job.build в GitLab CI?

«Какие операции можно совершать с Job.build в GitLab CI?» — вопрос из категории CI/CD, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В GitLab CI/CD API, сущность Job (часто называемая в документации "job") позволяет управлять задачами пайплайна. Вот основные операции, которые я использовал для автоматизации и интеграций:

  • Запуск ручной job (play): Запуск job, у которой стоит when: manual. Полезно для утверждения деплоя на прод.
    curl --request POST 
         --header "PRIVATE-TOKEN: <GL_TOKEN>" 
         "https://gitlab.example.com/api/v4/projects/123/jobs/456/play"
  • Повторный запуск job (retry): Перезапуск упавшей или завершенной job с теми же параметрами.
    curl --request POST 
         --header "PRIVATE-TOKEN: <GL_TOKEN>" 
         "https://gitlab.example.com/api/v4/projects/123/jobs/456/retry"
  • Отмена выполняющейся job (cancel): Остановка job, которая сейчас выполняется.
  • Удаление артефактов job (erase): Очистка артефактов (логов, собранных файлов) для экономии места. Сама запись о job остается.
  • Получение логов выполнения (trace): Чтение логов job в реальном времени или после завершения. Используется для внешнего мониторинга статуса сборок.
    curl --header "PRIVATE-TOKEN: <GL_TOKEN>" 
         "https://gitlab.example.com/api/v4/projects/123/jobs/456/trace"
  • Получение информации о job (GET /projects/:id/jobs/:job_id): Запрос метаданных job — статус, этап, артефакты, длительность.