Загрузка файлов из последней версии SVN в SFTP в Jenkins CI - PullRequest
2 голосов
/ 22 февраля 2012

Я настраиваю задание Jenkins для загрузки файлов из Subversion в SFTP. Publish Over SSH работает довольно хорошо, но загружает все файлы в каждой сборке.

Для некоторых проектов у нас есть тысячи файлов, и загрузка стоит более 1 часа, так что это не вариант.

Может кто-нибудь предложить способ загрузки только файлов, измененных в последней ревизии?

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Вы можете использовать Subversion Plugin , чтобы опросить изменения SVN и запустить задание, которое ничего не делает в частности.Давайте назовем это YourPollingJob .Затем вызовите Jenkins API через http следующим образом:

http://[jenkins_server]/api/xml?depth=2&xpath=/hudson/job[name='YourPollingJob']/build[id='BUILD_ID']/changeSet

, где BUILD_ID - это фактический идентификатор сборки только что выполненного задания (обычный формат - что-то вроде 2012-02-21_16-15-49).Изучите результат.Обратите внимание, что вся информация о файлах, которые изменились со времени предыдущей сборки, есть - вам просто нужно разобрать ее.

Так что теперь вы можете делать следующее: YourPollingJob будет вызывать другуюзадание - давайте назовем его CopyJob - и передадим ему BUILD_ID в качестве параметра (через Параметризованный пусковой модуль триггера ; обязательно вызовем CopyJob какшаг после сборки, не как шаг сборки). CopyJob затем запросит Jenkins через http (как указано выше, лучший способ сделать это через wget), проанализирует результаты и сделает копию.

Вы можете сделать все этов одной работе, но это немного сложнее и сложнее в отладке.

Также, возможно, целесообразно копировать весь репозиторий один раз в день (ночью).

1 голос
/ 22 февраля 2012

Вы можете хранить эти файлы в отдельном хранилище.Похоже, что распределенные VCS, такие как Mercurial или Git, были бы лучше для этого в вашем случае.Вы можете установить его в рабочей области и добавить шаг сборки, чтобы зафиксировать измененные файлы и отправить коммит на сервер, на котором вы хотите его опубликовать (что должно работать до тех пор, пока вы не уничтожите рабочую область или не создадите несколькоили добавьте дополнительные шаги для клонирования / извлечения репозитория с артефактами с сервера, на котором они хранятся.

...