Я использую сервер Jenkins CI, который опрашивает сервер SVN, проверяет проект (Maven) и строит его.
Недавно мы изменили сервер сборки, и я заново настроил Jenkins с несколькими имеющимися у нас проектами. Теперь у этого нового экземпляра есть серьезная проблема: всякий раз, когда новый был передан в репозиторий SVN, Jenkins svn update
процесс испортит те новый файлы, дублируя их содержимое. Итак, если один из наших разработчиков зафиксирует новый файл A
с этим содержанием:
<test>
</test>
тогда файл окажется в рабочем пространстве Jenkins следующим образом:
<test>
</test>
<test>
</test>
Очевидно, это очень раздражает. Я могу прояснить ситуацию, протерев рабочую область, но на самом деле я не хочу делать это каждый раз, когда сборка терпит неудачу. У меня никогда раньше не было проблем с SVN и / или Jenkins.
Что могло быть причиной такого поведения?
Похоже, это ошибка Дженкинса: https://issues.jenkins-ci.org/browse/JENKINS-14551
На данный момент лучший способ справиться с этим - реализовать обходной путь путем автоматической очистки рабочего пространства перед сборкой. Однако это может не подходить, если у вас большие и частые слияния, но, насколько я понимаю, они работают над этим.
Я никогда не доверял Дженкинсу, чтобы он мог изящно обрабатывать изменения / обновления рабочей области, поэтому, как правило, я всегда выбирал "Wipe out Workspace" вариант и работал над оптимизацией сервера SVN или соединения WAN с сервером SVN, чтобы частые циклы сборки / проверки не разрушали сервер SVN или подключение к Интернету.