2015-11-14 4 views
2

У меня есть подмодуль A, который не является автономным приложением. Для этого требуется основное приложение. Я хотел бы создать CI-сборку для A, чтобы всякий раз, когда фиксация была нажата, она запускает сборку с основным кодом проекта.Как получить подмодули для запуска сборки Jenkins

Как это сделать в Дженкинсе?

Что мне нужно сделать:

  • Коммит-А запускает сборку.
  • Строка клонирует главный код проекта и вытаскивает последний код для A в момент фиксации для A (а не фиксацию, о которой знает главный проект).

Как бы это сделать, используя Jenkins и GIT?

Примечание. У меня есть несколько подмодулей для проекта. Submodule A запускает сборку, которая извлекает последние изменения из A, а также последний из основного кода и вытягивает обновления из других подмодулей.

ответ

0

Это может быть сделано в два этапа:

  1. Включить триггер сборки URL на работе Дженкинс вы хотите построить. Это делается на вкладке «Триггер сборки удаленно». URL будет выглядеть следующим образом: JENKINS_URL/job/MY_JOB_NAME/build?token=TOKEN_NAME.

  2. Установите git post-receive hook в подмодуль A, который вызывает вышеуказанный URL. Легкий способ сделать это - просто использовать завиток: curl JENKINS_URL/job/MY_JOB_NAME/build?token=TOKEN_NAME.

Нажатие на субмодуль A затем запускает проект главного проекта Дженкинса, вызывая его. Настройте задание Jenkins, чтобы обновить его код до сборки или любые другие необходимые вам особенности.

This answer содержит подробную информацию о том, как настроить крючок git.

1

Это можно сделать без крючков git.В этом примере мы имеем 3 сделок РЕПО:

  1. родитель
    • Пустой репо, что только имеет подмодулях
  2. ребенок-а
    • Один ребенок подмодуль репо
  3. ребенок-b
    • Другой ребенок подмодуль репо

Когда клонированы с суб-модулей, которые он выглядит следующим образом:

parent\ 
    child-a\* 
    child-b\* 

В Дженкинс создать фристайл проект под названием dummy-child-a.

  • При Source Code Management настройке по Repository URL для child-a
  • Под Build Triggers вы выбираете Poll SCM и установить желаемый интервал
  • Под Build нажмите Add build step
    • Выберите Execute Windows batch command или Execute shell в зависимости от ОС
    • В окно сценария делает что-то вроде echo hello (это фиктивная часть)

Повторите эти шаги для child-b


В Дженкинс создать фристайл проект под названием parent.Это где мы на самом деле здание

  • При Source Code Management настройке по Repository URL для parent
  • Нажмите add под Additional Behaviours и выберите Advanced sub-modules behaviours
    • Проверил:
    • Recursively update submodules
    • Update tracking submodules to tip of branch
    • Use credentials from default remote of parent repository
  • Под Build Triggers проверка Build after other projects are built
    • В Projects to watch поле, заполнить все проекты смотреть с разделением запятой: dummy-child-a, dummy-child-b
    • Если parent не имеет исходный код, который будет меняться, Вы надеваете» т нужно Poll SCM на этом Дженкинс работу
    • Проверить Trigger even if the build fails

И все готово. Любые изменения для child-a или child-b вызовут перестройку родителя. Этот метод предполагает, что число подмодулей в родительском доме изменяется редко. Если вам нужно добавить еще один подмодуль, вам нужно будет сделать еще один проект dummy, а затем обновить projects to watch сборки parent Jenkins.

Смежные вопросы