Проверка нескольких репозиториев git в одном рабочем пространстве Jenkins



используя Дженкинс 1.501 и Дженкинс git плагин 1.1.26



У меня есть 3 разных репозитория git каждый с несколькими проектами.



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



Я читал это:



http://jenkins.361315.n4.nabble.com/multiple-git-repos-in-one-job-td4633300.html



но это не очень помогает. Я попытался указать ту же папку в разделе локальный подкаталог для РЕПО (необязательно) для всех РЕПО, Но это дает тот же результат.



Если это просто невозможно с помощью Дженкинса, я думаю, что некоторые предварительные шаги/сценарии могут быть использованы для перемещения проектов в нужное место. Его не вариант измените конфигурацию сборки проектов.

764   7  

7 ответов:

проверка более одного РЕПО одновременно в одной рабочей области невозможна с помощью плагина Jenkins + Git.

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

Я определенно рекомендовал бы последний подход, как вы не придется беспокоиться, если расположение рабочей области изменится (вы можете использовать переменную среды $WORKSPACE).

2014 EDIT: этот ответ устарел и больше не отражает лучшие практики. Пожалуйста, смотрите ответы ниже относительно несколько СКМ плагин.

2016 EDIT2: несколько SCM плагин устарел. На странице нескольких плагинов SCM: "пользователи должны перейти наhttps://wiki.jenkins-ci.org/display/JENKINS/Pipeline + плагин . Трубопровод предлагает лучший способ проверки из нескольких SCMs,и поддерживается командой разработчиков Jenkins core."

с несколькими Scms плагин:

  • создайте другую запись репозитория для каждого репозитория, который вам нужно проверить (основной проект или проект зависимости.

  • для каждого проекта в меню "Дополнительно" (во втором меню "дополнительно" есть две кнопки с надписью "дополнительно" для каждого репозитория) найдите текстовое поле "локальный подкаталог для РЕПО (необязательно)". Вы можете указать там подкаталог в каталоге "workspace", где вы хотите чтобы скопировать проект. Вы можете сопоставить файловую систему моего компьютера разработки.

"второе расширенное меню" больше не существует, вместо этого нужно использовать кнопку "Добавить" (в разделе "Дополнительное поведение") и выбрать "проверить в подкаталог"

  • Если вы используете ant, как сейчас сборка.xml-файл с целевыми объектами сборки не в корневом каталоге рабочей области, а в подкаталоге, вы должны отразить это в "вызов Муравей" конфигурации. Для этого в поле "Invoke ant" нажмите "Advanced" и заполните текст ввода "Build file", включая имя подкаталога, в котором выполняется сборка.xml находится.

надеюсь, что это поможет.

С Несколько Scms Плагин - Это исключено.

С Трубопровод Дженкинс его можно проверить несколько репозиториев git и после его создания с помощью gradle

node {   
def gradleHome

stage('Prepare/Checkout') { // for display purposes
    git branch: 'develop', url: 'https://github.com/WtfJoke/Any.git'

    dir('a-child-repo') {
       git branch: 'develop', url: 'https://github.com/WtfJoke/AnyChild.git'
    }

    env.JAVA_HOME="${tool 'JDK8'}"
    env.PATH="${env.JAVA_HOME}/bin:${env.PATH}" // set java home in jdk environment
    gradleHome = tool '3.4.1' 
}

stage('Build') {
  // Run the gradle build
  if (isUnix()) {
     sh "'${gradleHome}/bin/gradle' clean build"
  } else {
     bat(/"${gradleHome}\bin\gradle" clean build/)
  }
}
}

вы можете рассмотреть возможность использования git подмодули вместо пользовательского конвейера, как это.

Я использовал Несколько Scms Плагин в сочетании с плагином Git успешно с Дженкинсом.

в зависимости от отношений репозиториев, другой подход заключается в добавлении другого репозитория (репозиториев) как git подмодули в один из репозиториев. Подмодуль git создает ссылку на другие репозитории. Эти репозитории подмодулей не клонируются, если вы не укажете --recursive флаг при клонировании "суперпроекты" (официальный термин).

вот команда, чтобы добавить подмодуль в текущий проект:

git submodule add <repository URI path to clone>

мы используем Jenkins v1.645 и Git SCM будет из коробки делать рекурсивный Клон для суперпроектов. Вуаля вы получаете файлы суперпроекта и все зависимые (подмодульные) файлы РЕПО в своих соответствующих каталогах в той же рабочей области задания Дженкинса.

не ручаюсь, что это правильно подход скорее это подход.

Дженкинс: Несколько SCM-устарели. Git Plugin-не работает для нескольких репозиториев.

скриптинг / конвейер как код-это путь.

мы используем git-repo для управления нашими несколькими репозиториями GIT. Существует также Дженкинс РЕПО плагин это позволяет проверить все или часть репозиториев, управляемых git-repo, в том же рабочем пространстве Jenkins job.

Comments

    Ничего не найдено.