Используйте Hudson для создания определенного git commit
У меня есть сервер сборки hudson. Исходный код управляется репозиторием git. Для каждой сборки последняя версия проверяется и компилируется. Теперь я хочу сказать hudson использовать не последнюю версию, но более старую версию кода (указанную мной).
В hudson у меня есть два параметра, которые можно установить. Первое "имя репозитория" со значением по умолчанию "origin" и вторым refspec
со значением +refs/heads/*:refs/remotes/origin/*
. Я немного попробовал что-то вроде origin/[commitid]
или +refs/heads/*:refs/remotes/origin/[commitid]
. Но ничего не работало, как ожидалось.
Думаю, мне пришлось использовать параметризованное задание, чтобы я мог передать commit как параметр в задание.
Как я могу сказать hudson использовать конкретное коммитирование вместо последнего?
Ответы
Ответ 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 на этой ветке. Обратите внимание, что это не было проверено с помощью подмодулей", так что, похоже, это то, что вы имеете в виду.