Как вы используете экспорт SVN для перемещения файлов из Dev или QA в производственную среду? - PullRequest
2 голосов
/ 02 июня 2009

вы бы переместили файлы из DEV в Prod или из QA в Prod? Как вы используете экспорт SVN в вашей среде? Любые удобные сценарии, которыми вы можете поделиться?

Я посмотрел другие темы, но у них недостаточно информации.

Я хочу знать, как лучше загружать обновления app / db в производственную среду из QA, DEV или Staging. Это среда LaMP.

Ответы [ 2 ]

3 голосов
/ 10 июня 2009

Ну, во-первых, я бы не стал переносить файлы напрямую из dev или qa в производство. Как и предполагает ваш вопрос, я бы развернул помеченный релиз из вашего SCM (в данном случае это subversion) непосредственно в ваших соответствующих средах.

В общем, я бы порекомендовал обратиться к специализированному инструменту развертывания, например Capistrano . Есть немного предварительных затрат времени на изучение инструмента и настройку сценариев развертывания, но возможность позже сказать «cap deploy qa» или «cap откат производства», чтобы изменить вашу работающую версию в считанные секунды: а) более чем окупят первоначальные затраты времени и б) сохранят задницу, когда что-то пойдет не так.

Однако, чтобы напрямую ответить на ваш вопрос, если бы вы делали это вручную, я бы порекомендовал процесс, подобный этому (со вставленным sudo, где это необходимо):

  1. Иметь каталог /opt/my_app/ с несколькими подкаталогами, содержащими разные версии, и "текущую" символическую ссылку на любую живую.
  2. Укажите вашу конфигурацию apache на /opt/my_app/current
  3. Чтобы развернуть новую версию, запустите что-то вроде "svn export https://my_repo/my_app /opt/my_app/1.2.3" (при условии, что новая версия была 1.2.3).
  4. Изменить символическую ссылку: "rm /opt/my_app/current; ln -s /opt/my_app/1.2.3 opt/my_app/current"
  5. При необходимости перезапустите Apache или другие процессы.

Обновления базы данных - более интересный вопрос. Лично я люблю Миграции Rails за это. Если бы вы делали это вручную, вы могли бы включить в свой проект пару сценариев оболочки, чтобы обновить базу данных и откатить ее соответственно, но сохранить правильность версионирования было бы довольно сложно, поскольку они были бы характерны только для одной конкретной версии. , Я бы порекомендовал использовать существующую систему, такую ​​как Migrations (которую можно использовать отдельно от Rails - я видел ее как единственный компонент Ruby в некоторых проектах на основе Java), или задать это как отдельный вопрос.

0 голосов
/ 02 июня 2009

Есть много способов сделать это, в зависимости от приложения и среды.

В среде LAMP я часто создаю учетную запись на рабочем сервере и проверяю файлы разработки, как если бы я там разрабатывал, выполнял сборку, а затем развертывал локально.

  1. Приложение может быть развернуто как непривилегированный пользователь.
  2. Учетная запись пользователя может быть удалена после развертывания по соображениям безопасности.
  3. Обычно это довольно простой метод, если вам удобно делать что-то удаленно, например, по ssh.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...