Каков наилучший способ безопасной публикации сборки публикации сайта?

StackOverflow https://stackoverflow.com/questions/18224

Вопрос

Итак, по вашему опыту, каков наилучший способ?Существует ли безопасный способ, который также можно использовать для создания сценариев в инструменте автоматизации сборки?

Редактировать:Я должен упомянуть, что это windows / .net, и я буду развертываться на iis6

Это было полезно?

Решение

Для некоторых проектов я использую Капистрано вытолкнуть наружу, чтобы жить.Он построен поверх ruby и делает написание скрипта развертывания очень простым и использует ssh.

В других проектах у меня есть крошечное приложение deploy, которое использует bash для экспорта svn во временный каталог, а затем повторно синхронизирует его с действующим сервером.Вы можете заставить rsync использовать ssh.

Я очень предпочитаю метод Capistrano, даже если ваш проект написан не на ruby / rails.

Другие советы

Это похоже на то, что можно было бы легко сделать с помощью SFTP.Взгляните на Шпаклевка (psftp и pscp) или WinSCP для Windows, или rsync и ОПЕНСШ для Unix-файлов.

@Neall, я бы добавил set -e во второй строке, потому что вы не хотите, чтобы текущий сайт заменялся, если rsync выходит из строя по какой-либо причине. set -e вызывает завершение работы скрипта в случае сбоя какой-либо из его команд.

Редактировать:Тот Самый set -e это должно быть первым пунктом в сценарии, сразу после #!/bin/bash.

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

В bash:

#!/bin/bash

set -e
cp -R /var/livesite /var/newversion
rsync user@devserver:/var/readytogolive /var/newversion
mv /var/livesite /var/oldlivesite
mv /var/newversion /var/livesite

Виола!

Редактировать:@Тед Персиваль - Это хорошая идея.Я даже не знал о "set -e".Обновленный скрипт.Редактировать:обновлено снова по предложению Ted (хотя я думаю, что это все равно сработало бы, если бы каким-то образом команда cp завершилась неудачей, и если cp завершится неудачей, у вас, вероятно, возникнут более серьезные проблемы.)

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

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

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

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

как только его протестируют, просто;замените файлы на рабочем веб-корне :)

/мп

На моей внештатной работе мы создали три отдельных окружения.

  • Запущенный сервер разработки продолжает сборку с использованием CruiseControl.Любая регистрация приведет к запуску сборки.Здесь было проведено тестирование качества.
  • Тестовый сервер, на котором проводилось приемочное тестирование пользователей.
  • Производство.

Рабочий процесс был следующим:

  1. Разработчик проверяет внесение изменений в SourceControl.
  2. CruiseControl создает и развертывает сборку для разработчиков.
  3. Разработчик находится под контролем
  4. После прохождения контроля качества запускается скрипт robocopy, который развертывает сборку разработчика для тестирования.
  5. Тест завершен
  6. После прохождения теста запускается скрипт robocopy, который развертывает Тест в PRD.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top