Jenkins: развертывание FTP / SSH, включая удаление и перемещение файлов - PullRequest
6 голосов
/ 22 ноября 2011

Мне было интересно, как развернуть мои веб-проекты с использованием ftp и / или ssh.

В настоящее время у нас есть собственная система развертывания, которая способна справиться с этим, но я хочу перейти на Jenkins.

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

У вас есть какие-либо советы, подсказки или идеи относительно моей проблемы?

Ответы [ 3 ]

3 голосов
/ 22 ноября 2011

Плагин Publish Over SSH позволяет отправлять команды с помощью ssh на удаленный сервер. Это работает очень хорошо, мы также выполняем некоторые перемещения / удаления файлов перед развертыванием новой версии, и у нас не было никаких проблем при использовании этого подхода.

1 голос
/ 22 ноября 2011

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

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

Кстати: я бы не рекомендовал автоматически обновлять ваши живые сайты после каждой сборки с использованием 'publish over... 'расширение.В случае, если мы действительно хотим, чтобы живой сайт автоматически обновлялся, мы полагаемся на плагин Promoted Builds , который делает его почти полностью автоматизированным, но добавляет немного безопасности.

0 голосов
/ 19 ноября 2016

Я предложил простое решение для удаления удаленных файлов и загрузки изменений на удаленный 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-репо (и наоборот)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...