В Jenkins, как проверить проект в определенный каталог (используя GIT)
Извините за стиль 'svn' - мы находимся в процессе перехода от SVN к GIT (включая нашу среду CI Jenkins).
Нам нужно, чтобы Jenkins мог проверить (или я должен сказать clone?) проект GIT (репозиторий?) в конкретный каталог. Мы пробовали некоторые матчи refspecs, но это было не слишком очевидно для понимания и использования.
Кроме того, если в том же проекте Jenkins нам нужно проверить несколько частных репозиториев GitHub на несколько отдельных серверов под корнем проекта, как мы можем это сделать?
У нас установлен плагин GitHub. Надеюсь, мы правильно сформулировали все.
Ответы
Ответ 1
По умолчанию git плагин для Jenkins делает работу довольно красиво.
После добавления нового репозитория git (конфигурация проектa > Управление исходными кодами > установите флажок git) в проект перейдите в нижнюю часть настроек плагина, чуть выше области браузера репозитория. Должна быть кнопка "Дополнительно". После нажатия на нее должна появиться новая форма со значением, описанным в качестве локального подкаталога для репо (необязательно). Установка этого параметра на folder
заставит плагин проверять хранилище в папке относительно вашей рабочей области. Таким образом, вы можете иметь столько репозиториев в своем проекте, сколько вам нужно, все в разных местах.
В качестве альтернативы, если проект, который вы используете, позволит это, вы можете использовать вспомогательные модули git, похожие на внешние пути в SVN. В git книге есть раздел по этой теме. Если это не будет против какой-либо политики, подмодули довольно просты в использовании, что даст вам мощный способ управления местоположениями, версиями/тегами/ветвями, которые будут импортированы, и он будет доступен в вашем локальном репозитории, а также даст вам лучшую переносимость.
Очевидно, что плагин git поддерживает проверку подмодулей, поэтому Дженкинс может эффективно работать с ними.
Ответ 2
Я согласен с @Łukasz Rżanek, что мы можем использовать git плагин
Но, я использую опцию: checkout to sub-direction, что активируется следующим образом:
В Управление исходными кодами нажмите Git
нажмите кнопку добавления, выберите checkout в подкаталог
![enter image description here]()
Ответ 3
В новом конвейере Jenkins 2.0 (ранее называемом Workflow Plugin) это делается по-разному для:
- Основной репозиторий
- Другие дополнительные репозитории
Здесь я специально ссылаюсь на Multibranch Pipeline version 2.9.
Основной репозиторий
Это репозиторий, содержащий ваш Jenkinsfile
.
На экране "Конфигурация" для вашего проекта конвейера введите имя своего репозитория и т.д.
Не использовать дополнительные действия > Отъезд в подкаталог. Это поместит ваш Jenkinsfile
в подкаталог где Jenkins не сможет найти его.
В Jenkinsfile
, проверьте основной репозиторий в подкаталоге с помощью dir()
:
dir('subDir') {
checkout scm
}
Дополнительные репозитории
Если вы хотите проверить больше репозиториев, используйте генератор синтаксиса Pipeline, чтобы автоматически генерировать фрагмент кода Groovy.
На экране "Конфигурация" для проекта вашего конвейера:
- Выберите Синтаксис трубопровода. В примере
Выпадающее меню Step, выберите checkout: General SCM.
- Выберите вашу систему SCM, например Git. Заполните обычную информацию
о вашем хранилище или депо.
- Обратите внимание, что в Multibranch Pipeline переменная среды
env.BRANCH_NAME
содержит имя ветки основного репозитория.
- В раскрывающемся меню Дополнительные действия выберите
Зайдите в подкаталог
- Нажмите "Создать" Groovy. Дженкинс отобразит фрагмент кода Groovy
соответствующая проверке SCM, которую вы указали.
- Скопируйте этот код в конвейер script или
Jenkinsfile
.
Ответ 4
Стоит исследовать плагин Pipeline. С помощью плагина вы можете проверить несколько проектов VCS в относительные пути к каталогам. Предварительно создайте каталог для проверки VCS. Затем выпустите команды для вновь загруженного рабочего пространства VCS. В моем случае я использую git. Но вы должны получить эту идею.
node{
def exists = fileExists 'foo'
if (!exists){
new File('foo').mkdir()
}
dir ('foo') {
git branch: "<ref spec>", changelog: false, poll: false, url: '<clone url>'
......
}
def exists = fileExists 'bar'
if (!exists){
new File('bar').mkdir()
}
dir ('bar') {
git branch: "<ref spec>", changelog: false, poll: false, url: '<clone url>'
......
}
def exists = fileExists 'baz'
if (!exists){
new File('baz').mkdir()
}
dir ('baz') {
git branch: "<ref spec>", changelog: false, poll: false, url: '<clone url>'
......
}
}
Ответ 5
Кроме того, если в том же проекте Jenkins нам нужно проверить несколько частных репозиториев GitHub на несколько отдельных серверов под корнем проекта. Как мы можем это сделать?
Jenkin Multiple SCMs Plugin решила проблему с несколькими репозиториями для меня очень красиво. Я только что работал над проектом, который проверяет четыре разных репозитория git в общей папке. (Я немного неохотно использовал супер-проекты git как предложенный ранее Łukasz Rżanek, поскольку git достаточно сложный, без подмодули.)
Ответ 6
Я не использую плагин github, но с вводной страницы он более или менее похож на gerrit-trigger plugin.
Вы можете установить плагин git, который может помочь вам проверить ваши проекты, если вы хотите включить несколько проектов в одно задание jenkins, просто добавьте репозиторий в свою работу.
Br,
Тим