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

Используйте Hudson для создания определенного git commit

У меня есть сервер сборки hudson. Исходный код управляется репозиторием git. Для каждой сборки последняя версия проверяется и компилируется. Теперь я хочу сказать hudson использовать не последнюю версию, но более старую версию кода (указанную мной).

В hudson у меня есть два параметра, которые можно установить. Первое "имя репозитория" со значением по умолчанию "origin" и вторым refspec со значением +refs/heads/*:refs/remotes/origin/*. Я немного попробовал что-то вроде origin/[commitid] или +refs/heads/*:refs/remotes/origin/[commitid]. Но ничего не работало, как ожидалось.

Думаю, мне пришлось использовать параметризованное задание, чтобы я мог передать commit как параметр в задание.

Как я могу сказать hudson использовать конкретное коммитирование вместо последнего?

4b9b3361

Ответ 1

Я просто хочу this ответить более ясно. Как сделать свою работу для проверки определенной фиксации, шаг за шагом:

  • Добавьте строковый параметр в ваше задание с именем, пусть оно будет COMMIT в моем примере.
  • Выберите Git как SCM (предоставленный Jenkins Git плагин).
  • В свойствах Git SCM задаются ваши свойства репо.
  • В Git SCM в разделе Филиалы для создания типа ${COMMIT}, который является ссылкой на параметр задания и будет разрешен во время сборки.

Чтобы он запустил сборку и в журнале вы увидите что-то вроде этого:

Cloning the remote Git repository
Cloning repository ssh://your-repo.git
Fetching upstream changes from ssh://your-repo.git
using GIT_SSH to set credentials 
Fetching upstream changes from ssh://your-repo.git
using GIT_SSH to set credentials 
Checking out Revision af63e2102b65953316e512c0bb659578bb143a33 (detached)

Обратите внимание, что есть другие способы установить переменную среды перед проверкой SCM, то есть с помощью шага Prepare environment for the run из EnvInject Plugin (вы даже можете использовать Groovy для этого).

Кроме того, если вы не видите параметры, о которых я говорю, или они не работают, убедитесь, что у вас есть новая версия плагина Git В моем случае это 2.2.0.

Ответ 2

Вы можете использовать параметр ветвления jenkins- git -plugin, чтобы определить конкретный идентификатор фиксации.

Дженкинс будет только проверять, что commit, а не глава ветки.

Ответ 3

В "Предварительных шагах" попробуйте добавить "Execute shell" и добавьте:

   git pull
   git checkout <commit version>

Ответ 4

Обходным решением будет следующее:

  • установите плагин Git для создания специальной ветки build_br.
  • reset ветвь build_br к ожидаемому фиксации
  • нажмите эту ветвь build_br на удаленный монитор репо Jenkins или Hudson (это будет push --force, как показано на рисунке git reset --hard и удаленный репозиторий ")

Таким образом, построение этой ветки build_br означало бы создание определенного коммита, и GIT_COMMIT будет правильно установлен.
Никакая разработка не должна происходить в этой специальной ветки, так как она reset регулярно для любой фиксации, которую необходимо создать.

Ответ 5

Вы можете настроить ваше задание Хадсона для создания конкретной ветки. Затем вы можете нажать любые изменения, которые вы хотите, чтобы Хадсон построил на этой ветке.

Ответ 6

Как говорится в документации:

git plugin branch configure

Введите свой идентификатор фиксации в настройку "Ветки для сборки".

Ответ 7

Я не уверен насчет Хадсона, но у Jenkins Git Plugin есть кнопка "Дополнительно..." справа над полем "Хранилище репозитория". Щелчок там показывает много дополнительных опций, один из которых - "Checkout/merge to local branch (optional)". В тексте его справки говорится: "Если дано, проверьте ревизию, чтобы она была построена как HEAD на этой ветке. Обратите внимание, что это не было проверено с помощью подмодулей", так что, похоже, это то, что вы имеете в виду.