Подтвердить что ты не робот

В Jenkins, как проверить проект в определенный каталог (используя GIT)

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

Нам нужно, чтобы Jenkins мог проверить (или я должен сказать clone?) проект GIT (репозиторий?) в конкретный каталог. Мы пробовали некоторые матчи refspecs, но это было не слишком очевидно для понимания и использования.

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

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

4b9b3361

Ответ 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, Тим