Страницы

Поиск по вопросам

среда, 12 февраля 2020 г.

Jenkins запуск build проекта после push

#gitlab #build #jenkins


Доброго времени суток. Первый раз столкнулся с задачами CI. Проблема - не получается
адекватно настроить Jenkins. Что требуется: после push проекта на GitLab (именно после
push, это важно), Jenkins должен попытаться собрать проект.

Шаги предпринятые для решения этой проблемы:


Jenkins сервер поднят и настроен, и работает по адресу jenkinsaddres:port
На Jenkins сервере есть GitLab connection опция которая настроена на gitlabhost,
GitLab API token задан и test connection возвращает радостное success.
Добавлен проект, Source Code Management, Repository URL, Credentials, Branch Specifier
настроены.
В проекте опции Build when a change is pushed to GitLab. GitLab CI Service URL: jenkinsaddres:port/project/test
активна, GitLab Triggers: Push events опция так же активна.
GitLabProject -> Settings -> Web hook -> jenkinsaddres:port/project/test, и опция
Push Events тоже активна.


Проект build'ится по расписанию, или вручную но никак не хочет собираться даже при
тестовой отправке hook'а с GitLab. POST сообщение доходит следующего вида source: gitlabhost;
destination: jenkinsaddres; Protocol: HTTP; info: POST /project/test HTTP/1.1 (application/json).
Ответ: адреса верные поэтому не буду их показывать, поле info: HTTP/1.1 404 Not Found
(text/html).

Если на Jenkins выключить все secure опции, и посылать hook на jenkinsaddres:port/job/test(сюда
он стягивает проекты) то тогда объект все-таки находится: Found. Но оказывается что
изменений Jenkins не видит (Not Modified), думаю поэтому проект и не ребилдится.
    


Ответы

Ответ 1



Борюсь с подобной же проблемой. Статья https://github.com/jenkinsci/gitlab-plugin/issues/298 дала следующую подсказку - тестируют с POST а не GET, что возвращает 403 так как "anonymous is missing the Job/Build permission". Два решения по починке https://github.com/jenkinsci/gitlab-plugin/issues/375 Если не заработает после правки - стоит проверить имя проекта. Если что есть URL encoded - это проблемма Так Unit Tests не работает, а UnitTests работает.

Ответ 2



Можно использовать триггер с токеном, он позволяет запускать сборку даже анонимному пользователю. Например, в моем дженкинсе аноним имеет разрешение только на просмотр (Read) задач и сборок. Но хуки работают из Гитлаба, curl'ом и просто через браузер. В конфигурации задачи example_jenkins_job: Хук в Гитлабе: http://jenkinsaddress:port/job/example_jenkins_job/build?token=secret_token Или, если задача параметризованная: http://jenkinsaddress:port/job/example_jenkins_job /buildWithParameters?token=secret_token В этом случае будет запущена сборка с дефолтными значениями параметров. Вы можете передавать собственные значения параметров следующим образом: http://jenkinsaddress:port/job/example_jenkins_job /buildWithParameters?token=secret_token¶m1=value1¶m2=value2 Можно добавить причину сборки: &cause=Cause+Text Она сохранится в информации о сборке: И в логе сборки, первой строкой: Started by remote host 127.0.0.1 with note: Cause Text

Комментариев нет:

Отправить комментарий