стратегии развертывания, PHP + SVN - PullRequest
7 голосов
/ 24 ноября 2010

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

-> Разработка завершается для определенного выпуска

-> Все разработчики передают свои файлы в транк

-> Сравнивают схемы базы данных с помощью TOAD и переносятизменения

-> Создать новую ветку в SVN

-> Экспорт с помощью SVN (для удаления папки .svn и т. д.)

-> минимизировать JS, CSS

-> загрузить на промежуточный сервер

-> выполнить цикл тестирования

-> исправить ошибки в ветке и проверить их

-> повторно минимизировать JS, CSS [если требуется]

-> загрузка на рабочий сервер

-> когда я говорю «загрузить», это означает загрузку файлов через SSH в папку / var / www / html

-> сначала загрузите js, css, images

-> затем загрузите php файлы

-> во время загрузки исключите каталоги, такие как загруженные пользователем картинки и т. д.

-> выполнитьцикл тестирования

-> исправить ошибки и загрузить снова (может потребоваться повторная минимизация - несколько файлов)

-> проверить ошибки

-> проверказавершает

-> фиксацию ветки в svn

-> объединение изменений обратно в транк

-> фиксация транка [в течение этого цикла развертывания, никто не фиксирует файлы вtrunk]

процесс действительно сложный и требует много внимания.

есть предложения о том, как мы можем его улучшить?

Ответы [ 2 ]

2 голосов
/ 24 ноября 2010

Я использовал следующий путь развертывания.Это устраняет многие ваши потребности повторно загружать файлы в разные каталоги.После начальной настройки самая сложная работа, которую вам придется выполнить, это команды «svn update» в каждом из ваших тестовых местоположений.

Эта настройка предполагает, что вы используете конфигурационные файлы для указания на каталоги, такие как ресурсы, изображения и CSS.,

  1. Инициализация репозитория.Всегда имейте уникального пользователя для производственных и тестовых проверок.Это позволяет выполнять уникальные коммиты с живого сервера обратно на транк в чрезвычайных ситуациях.
  2. Разработка и фиксация разработчиков.Сборки помечаются номером сборки, а также тегом LIVE, когда они должны быть готовы к проекту.
  3. Оформление заказа на тестовом сервере.Если все пойдет хорошо.# dev.example.com / ~ test / project /
  4. svn обновить тестовый каталог на рабочем сервере.# example.com / ~ test / project
  5. svn обновить каталог вашего основного проекта на рабочем сервере до тега LIVE.# example.com
  6. Если у вас есть какие-либо исключения в шагах с 3 по 5, вернитесь к шагу 2.

У всех проектов есть файл конфигурации, который позволяет указать пути к разработкебазы данных, общие изображения и т. д. config.dist.php хорошо работает как схема именования.Каждая проверка затем копирует config.dist.php в config.php.Это позволяет использовать множество конфигураций без коллизий SVN.

Каждый файл конфигурации обычно имеет некоторый код, например

<?php
    #hopefully, your project can leave these first two constants set to '', because relative paths work for everything
         define('localPath', '/home/www/projectName');
         define('baseURL', 'http://example.com/~projectName');

    #if you want to write everything over a shared filesystem for instance, uploads.
         define('localAssetsDirectory', '/sharedFileSystem/localPath');

    #if you want to include a shared assets directory
         define('assetsURL', 'assets/images');

    #OR if you want to host assets in one location.
         define('assetsURL', 'http://assets.example.com/images/'    
 ?>

Все тестовые версии на рабочем сервере и на сервере разработки доступны только для ограниченных ips.как положено позади файла .htaccess.Apache настроен так, чтобы не обслуживать каталоги .svn.

0 голосов
/ 24 ноября 2010

если вы используете модульное тестирование (например, Selenium), вы можете использовать инструмент сборки для написания всего этого

если нет, я бы просто написал следующие шаги:

  • Экспорт с использованием SVN (для удаления папки .svn и т. Д.)
  • минимизировать JS, CSS
  • загрузить на промежуточный сервер

и

  • повторно минимизировать JS, CSS [при необходимости]
  • загрузить на рабочий сервер
  • когда я говорю «загрузить», это означает загрузку файлов через SSH в папку / var / www / html
  • первая загрузка js, css, images
  • затем загрузите php файлы
  • во время загрузки исключить каталоги, такие как загруженные пользователем картинки и т. Д.

, поскольку вы уже разветвляетесь и объединяетесь, вы должны всегда поддерживать стабильную сборку ствола с последними функциями. наконец, отметьте ваши релизы

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