В Jenkins, как оформить проект в конкретный каталог (используя GIT) - PullRequest
51 голосов
/ 19 марта 2012

Извините за стиль 'svn' - мы находимся в процессе перехода от SVN к GIT (включая нашу среду CI Jenkins).

Нам нужно, чтобы Дженкинс мог оформить (или я должен сказать, клонировать?) Проект GIT (хранилище?) В определенную директорию. Мы испробовали магию refspecs, но она не была слишком очевидной для понимания и успешного использования.

Кроме того, если в том же проекте Jenkins нам нужно извлечь несколько частных репозиториев GitHub в несколько отдельных каталогов в корне проекта, как мы можем это сделать, пожалуйста?

У нас установлен плагин GitHub. Надеюсь, мы все правильно сформулировали.

Ответы [ 7 ]

43 голосов
/ 03 марта 2015

Я согласен с @ Łukasz Rżanek в том, что мы можем использовать git plugin

Но я использую опцию: оформить заказ в направлении, которое включено следующим образом:
In Управление исходным кодом , отметьте Git
нажмите кнопку добавления, выберите оформить заказ в подкаталог

enter image description here

37 голосов
/ 20 марта 2012

Стандартный плагин git для Jenkins отлично справляется со своей задачей.

После добавления нового репозитория git (конфигурация проекта> Управление исходным кодом > отметьте опцию GIT) к проекту перейдите к нижней части настроек плагина, чуть выше Браузер репозитория область, край. Должна быть кнопка Advanced . После нажатия на нее должна появиться новая форма со значением, описанным как Локальный подкаталог для репо (необязательно) . Установка этого значения на folder заставит плагин извлекать хранилище в папку относительно вашей рабочей области. Таким образом, вы можете иметь столько репозиториев в вашем проекте, сколько вам нужно, все в разных местах.

В качестве альтернативы, если используемый вами проект позволит это сделать, вы можете использовать подмодули GIT, которые аналогичны внешним путям в SVN. В GIT Book есть раздел на эту тему. Если это не противоречит какой-либо политике, подмодули довольно просты в использовании, предоставляя вам мощный способ управления местоположениями, версиями / тегами / ветвями, которые будут импортированы, и будут доступны в вашем локальном хранилище, а также обеспечат лучшую переносимость.

Очевидно, что плагин GIT поддерживает проверку подмодулей, поэтому Дженкинс может работать с ними довольно эффективно.

33 голосов
/ 03 ноября 2016

В новом конвейере Jenkins 2.0 (ранее назывался плагин Workflow) это делается по-другому для:

  • Основного репозитория
  • Другие дополнительные репозитории

Здесь я конкретно имею в виду версию Multibranch Pipeline 2.9.

Основной репозиторий

Это репозиторий, содержащий ваш Jenkinsfile.

На экране Настроить для своего конвейерного проекта введите имя своего хранилища и т. Д.

Не использовать Дополнительные действия> Извлечь в подкаталог .Это поместит ваш Jenkinsfile в подкаталог , где Jenkins не сможет его найти .

В Jenkinsfile проверьте основной репозиторий в подкаталоге, используя dir():

dir('subDir') {
    checkout scm
}

Дополнительные репозитории

Если вы хотите проверить больше репозиториев, используйте генератор Синтаксис конвейера для автоматической генерации фрагмента кода Groovy.

На экране Настройка для проекта конвейера:

  1. Выберите Синтаксис конвейера .В раскрывающемся меню Sample Step выберите checkout: General SCM .
  2. Выберите систему SCM, например, Git .Введите обычную информацию о вашем хранилище или хранилище.
  3. Обратите внимание, что в многоотраслевом конвейере переменная среды env.BRANCH_NAME содержит имя ветви основного хранилища.
  4. В ДополнительноПоведение В раскрывающемся меню выберите Выйдите в подкаталог
  5. Нажмите Создать Groovy .Jenkins отобразит фрагмент кода Groovy, соответствующий указанной вами проверке SCM.
  6. Скопируйте этот код в сценарий конвейера или Jenkinsfile.
16 голосов
/ 07 октября 2016

Стоит изучить плагин 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>'
        ......
    }
}
6 голосов
/ 21 февраля 2013

Более того, если в одном и том же проекте Jenkins нам нужно извлечь несколько частных репозиториев GitHub в несколько отдельных каталогов под корнем проекта. Как мы можем сделать это, пожалуйста?

Плагин для нескольких SCMs Jenkin очень хорошо решил для меня проблему с несколькими репозиториями. Я только что работал над сборкой проекта, которая проверяет четыре разных репозитория git в общей папке. (Я немного неохотно использую суперпроекты git, как , предложенный ранее Шукашем Ранеком, так как git достаточно сложен без подмодулей.)

0 голосов
/ 16 апреля 2018

В новом потоке трубопровода может помочь следующее изображение.

enter image description here

0 голосов
/ 19 марта 2012

Я не использую плагин github, но со страницы введения он более или менее похож на плагин gerrit-trigger.

Вы можете установить плагин git, который поможет вам оформить заказ, если вы хотите включить несколько проектов в одно задание jenkins, просто добавьте репозиторий в ваше задание.

...