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

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

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

20.08.2008 15:26:28
8 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

6
20.08.2008 15:32:22

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

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

0
20.08.2008 15:32:58

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

как только это проверено, просто; замените файлы на производственном webroot :)

/ тр

0
20.08.2008 15:37:06

Это похоже на то, что можно легко сделать с SFTP. Взгляните на PuTTY (psftp и pscp) или WinSCP для Windows, или rsync и OpenSSH для Unixes.

4
20.08.2008 15:37:21

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

В Баш:

#!/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". Обновленный скрипт. Редактировать: обновлено снова по предложению Теда (хотя я думаю, что все равно будет работать, если каким-то образом команда cp не удалась, и если cp не удается, у вас, вероятно, более серьезные проблемы.)

1
20.08.2008 16:13:43

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

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

1
20.08.2008 16:09:37

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

1
22.08.2008 05:40:29

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

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

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

  1. Разработчик проверяет изменения в SourceControl.
  2. CruiseControl собирает и развертывает сборку в Dev.
  3. Dev QA'ed
  4. После прохождения QA запускается скрипт robocopy, который развертывает сборку Dev в Test.
  5. Тест прошел UAT
  6. После прохождения теста запускается скрипт robocopy, который развертывает тест в PRD.
0
22.08.2008 05:44:28