#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
Комментариев нет:
Отправить комментарий