2014-09-10 1 views
17

Я работаю с Jenkins CI и пытаюсь правильно настроить свои задания для использования git.Jenkins Git Plugin не вытягивает последние изменения перед тем, как строить работу

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

Когда я смотрю на выходе консоли, я вижу

> git fetch --tags --progress ssh://[email protected]/Util +refs/heads/*:refs/remotes/origin/* 
> git rev-parse origin/some_branch^{commit} 
Checking out Revision <latest_SHA1> (origin/some_branch) 
> git config core.sparsecheckout 
> git checkout -f <latest_SHA1> 
> git rev-list <latest_SHA1> 

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

Не должен ли он тянуть, прежде чем он попытается построить?

У меня установлен git 1.8.5 на моей машине Jenkins, которая является рекомендуемой версией. https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

После проверки других подобных вопросов звучания на SO, их ответы не помогли моей проблеме.

ответ

5

Я считаю, что Дженкинс тянет изменения и строит в своем собственном каталоге tmp. Таким образом, ваш каталог репозитория не получает обновления, хотя Дженкинс правильно строит новый код в собственной песочнице.

Мое решение это было добавить «мерзавец тянуть» шаг в моем процессе сборки, как так:

Когда новый коммит доставлен мой GitHub репо:
1. Создайте свой проект

в случае успешного выполнения следующих шагов после сборки:
1. выполнить Shell:

cd /your/repo/directory/ 
git pull 

вы можете явно изменить команду «мерзавец тянуть», чтобы делать то, что вы пе чтобы сделать, если «тянуть» не работает для вас.

+0

Благодарю вас, что привело меня на правильный путь. Что для меня работало: git pull -s recursive -X их происхождения myBranch – gorbysbm

16

Касается меня сценарий, где рабочее пространство было не получить очищено вверх, используется:

  • Исходный код управления -> Дополнительные Поведения -> Clean после проверки enter image description here

  • Другой вариант заключается в использовании Workspace Cleanup Plugin

+0

Это на самом деле правильный способ сделать это. Поэтому мне интересно, почему этот ответ не выбран. – maximi

+1

Я не понимаю, почему это не по умолчанию ... – ambe5960

+0

Этот параметр доступен на 2.6. – Abhijeet

0

Я знаю вопрос старый, но есть и другой способ сделать это.В окружающей среде разделе сборки, выберите «Удалить рабочее пространство, прежде чем строить начинает»

Смотрите скриншот ниже,

enter image description here

Это фактически очистить рабочее пространство, каждый раз, и, следовательно, вы получите обновленный код.