Я предложил простое решение для удаления удаленных файлов и загрузки изменений на удаленный FTP-сервер в качестве действия по сборке в Jenkins с использованием простого зеркалирующего сценария lftp. Страница руководства по Lftp
Короче говоря, вы создаете файл конфигурации в своем каталоге пользователей jenkins ~ / .netrc и заполняете его своими учетными данными FTP.
machine ftp.remote-host.com
login mySuperSweetUsername
password mySuperSweetPassword
Создайте скрипт lftp deploy.lftp и поместите его в корень вашего репозитория .git
set ftp:list-options -a
set cmd:fail-exit true
open ftp.remote-host.com
mirror --reverse --verbose --delete --exclude .git/ --exclude deploy.lftp --ignore-time --recursion=always
Затем добавьте сборку "Exec Shell"действие для выполнения lftp в скрипте.
lftp -f deploy.lftp
Сценарий lftp будет
- mirror: скопировать все измененные файлы
- reverse: отправить локальные файлы на удаленный хост.обычное зеркало тянет с удаленного хоста на локальный.
- verbose: выгрузить все заметки о том, какие файлы были скопированы, куда в журнал сборки
- delete: удалить удаленные файлы, которых больше нет в git repo
- исключить: не публиковать каталог .git или сценарий deploy.lftp.
- время игнорирования: не будет публиковаться в зависимости от времени создания файла.Если у вас этого нет, в моем случае все файлы были опубликованы, так как свежий клон git repo обновил временные метки создания файла.Это все еще работает довольно хорошо, хотя даже файлы, измененные путем добавления в них одного пробела, были определены как разные и загружены.
- рекурсия: будет анализировать каждый файл, а не зависеть от папок, чтобы определить, были ли какие-либо файлы в них возможно изменены.Это технически не нужно, так как мы игнорируем метки времени, но у меня все равно есть.
Я написал статью, объясняющую, как я синхронизирую FTP с Git для сайта WordPress, доступ к которому я мог получить только через FTP.В статье объясняется, как синхронизировать данные с FTP на Git, а затем как использовать Jenkins для сборки и развертывания обратно на FTP.Этот подход не идеален, но он работает.Он загружает только измененные файлы и удаляет файлы с хоста, которые были удалены из git-репо (и наоборот)