Как удаленно запускать проект по созданию многоблочных трубопроводов Jenkins?

Название в основном говорит об этом. Как вы можете инициировать сборку проекта для многоблочных проектов Jenkins из удаленного репозитория git?

Параметр "Триггер сборки удаленно" не работает, поскольку никакие маркеры, которые вы установили, не сохраняются.

Ответ 1

В настоящий момент (Jenkins 2.22) опция конфигурации триггера строит удаленно, видна в конфигурации заданий на многоблочном конвейере, но не работает (если вы проверите его и укажите токен, он получит reset после сохранения в любом случае). Согласно this, преднамеренно, что триггер не может быть установлен, но ошибка, которая появляется как опция вообще.

В этом же потоке они объясняют, как запускать сборки для каждого отдельного проекта (ветки) в проекте с многоканальным конвейером. Мне нужна была динамическая настройка, которая будет работать для ветвей, созданных после настройки триггера, поэтому вместо предлагаемой конечной точки из потока (/job/project-name/job-name/build, который должен был быть /job/job-name/project-name/build, поскольку проекты создаются из ветвей в задании), Я обнаружил, что конечная точка для использования - /job/job-name/build. Для этого вам нужно создать пользователя с маркером API (перейдите в "Управление Jenkins → Manage Users → Gear icon → Показать токен API" ) и используйте их как имя пользователя и пароль в вашем запросе.

Решение может быть очевидным для тех, которые используются для работы с Jenkins REST API, но когда вы новичок как в проектах с мультибрендными трубопроводами, так и в REST API, не должно быть явно.

Ответ 2

Недавно я преодолел это препятствие и хотел бы поделиться своей записью.

В моей конфигурации (Jenkins 2.60.2) нет возможности включить триггерные сборки удаленно (например, из скриптов), так как я могу только "View Configuration". Это мешало мне запускать конвейер, вызывая HTTP GET до конечной точки (/job/project-name/job/job-name/build).

Однако я обнаружил, что всегда могу вызвать HTTP-сообщение POST до конечной точки.

В настройке Global Security вам нужно будет указать действительную крошку или отключить опцию "Предотвратить использование подпрограмм запроса на межсайтовый сайт".

Привет,

Ответ 3

Без отключения кросс-сайтов (CSRF), команды, которые вы можете использовать

crumb=$(curl -s 'http://USERNAME:[email protected]_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
curl -X POST -H "$crumb" "http://USERNAME:[email protected]_URL/job/JOB_NAME/build"

замените букву в капитале соответствующими значениями.

Ответ 4

Я не смог получить токен API, как описано в принятом ответе, потому что нет такой ссылки под названием "Управление пользователями", хотя я вхожу в систему как администратор. Вместо этого я получил токен, как описано в Jenkins Wiki:

Маркер API доступен на вашей личной странице конфигурации. Нажмите ваше имя в верхнем правом углу на каждой странице, затем нажмите "Настроить", чтобы увидеть токен API

После того, как у вас есть токен, следующий запрос на завивки вызовет новую сборку для многоблочного конвейера (замените заполнители, начинающиеся с $)

curl -X POST -u "$jenkins_username:$api_token" "http://$jenkins_url/job/$my-pipeline/job/$branch_name/build?token=BUILD_TOKEN"

Примечания

  • Если имя конвейера или ветки содержит специальные символы, вам необходимо его закодировать; например, / становится %252F.
  • Параметр запроса token не является обязательным.
  • Этот ответ был проверен в Jenkins v2.6.