Как запустить задание (job) в Jenkins?

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

Ответ

Запуск задания в Jenkins можно выполнить несколькими способами, в зависимости от контекста и требований к автоматизации.

1. Через веб-интерфейс (ручной запуск):

  • Перейдите на дашборд Jenkins.
  • Найдите нужный пайплайн или фристайл-проект.
  • Нажмите кнопку "Build Now" (или "Собрать сейчас").
  • Для параметризованных сборок откроется форма для ввода параметров.

2. Через REST API (для автоматизации из скриптов или внешних систем): Используйте curl или аналогичные инструменты. Требуется API-токен пользователя (настраивается в Пользователь → Настройки → API Token).

# Запуск простой сборки
curl -X POST "http://JENKINS_URL/job/MY_JOB/build" 
  --user "USERNAME:API_TOKEN"

# Запуск параметризованной сборки с передачей параметров
curl -X POST "http://JENKINS_URL/job/MY_JOB/buildWithParameters" 
  --user "USERNAME:API_TOKEN" 
  --data "PARAM1=value1&PARAM2=value2"

# Использование crumb для защиты от CSRF (если включена)
CRUMB=$(curl -s "http://USERNAME:API_TOKEN@JENKINS_URL/crumbIssuer/api/json" | jq -r '.crumb')
curl -X POST "http://JENKINS_URL/job/MY_JOB/build" 
  -H "Jenkins-Crumb: $CRUMB" 
  --user "USERNAME:API_TOKEN"

3. По триггеру (автоматический запуск): Джоба может быть настроена на запуск автоматически при наступлении события:

  • SCM Polling: Опрос репозитория (Git, SVN) на изменения по расписанию (например, H/5 * * * * — каждые 5 минут).
  • Webhooks: При получении HTTP-запроса от системы контроля версий (например, GitHub/GitLab Webhook).
  • По расписанию (Cron): Использование поля triggers { cron('H 2 * * *') } в Declarative Pipeline или настройки в UI.
  • Запуск другими джобами: Через шаг build job: 'Downstream-Job' в пайплайне.

4. Через Jenkins CLI (устаревший, но возможный способ):

java -jar jenkins-cli.jar -s http://JENKINS_URL/ build MY_JOB -s -v

Из моего опыта: В современных CI/CD пайплайнах я предпочитаю использовать API-вызовы из других джоб (например, запуск деплой-джобы после успешного билда) или вебхуки из Git. Это обеспечивает полную автоматизацию процесса "commit → build → test → deploy". Для отладки или экстренных деплоев используется ручной запуск с параметрами через веб-интерфейс.