Импорт одного репозитария


Схема 1.

Пояснения к Схеме 1

  1. С текущего продакшна загружается код в репозитарий (это единственное место с гарантированно рабочим кодом). На trunk (основная ветвь разработки) в каталог htdocs.

    Займёт времени: ~1 час / проект

  2. Загруженный код немедленно копируется на stable (как достаточно оттестированный).

    Займёт времени: ~1 мин / проект

  3. (необязательно, просто уже можно начинать) Создаются ветки разработчиков, и feature branches. Создаются они как копия trunk.

    Займёт времени: 0, этим будут заниматься сами девелоперы

  4. (необязательно, просто уже можно начинать) Разработчики могут загружать свои изменения, сделанные на dev, в ветки.

    Займёт времени: 0, этим будут заниматься сами девелоперы

  5. Входная чистка trunk. Удаляем очевидно ненужные файлы, отладку, логи, бэкапы и прочий "CVS вручную". (*.20050823, *.bak, *.orig, *.save, *.tar - кажется, ни одному клиенту мы tar не отдаём, это всё наши архивы). Выносим только явный хлам.

    Добавляем в репозитарий tools/fix_permissions - скрипт для выставления "нестандартных" прав на файлы/каталоги, которые этого требуют. Таких немного - для большинства достаточно быть читаемыми, где нужен executable bit - это можно и нужно сделать с помощью SVN Properties. В fix_permissions - только действительно сложные случаи.

    В tools/cronjobs добавляются скрипты, запускаемые по cron. В tools/crontab.[projectname] кладётся кусок кронтаба (желательно с комментариями). На серверах можно в /etc/cron.d поместить symlink на нужные crontabs (для Vixie Cron, по крайней мере).

    Если есть желание - можно добавить doc - документацию, conf - настройки апача

    Займёт времени: Самый сложный пункт. В зависимости от сложности/размера проекта может занять от часа до дня. Проедем для mail_forward и website.ws (крайние случаи) - можно будет сказать точнее.

  6. Чищеный trunk отправляется на сервер qa, где подвергается тестированию.

    Также тестируются fix_permissions и crontab'ы / cronjob'ы.

    Займёт времени: чем больше времени потратим, тем лучше оттестируем. Опять же зависит от размера/сложности проекта.

  7. Оттестированные на qa чистки trunk мержатся на stable.

    Займёт времени:от силы полчаса. Сложности могут возникнуть только если кто-то из разработчиков успеет внести изменения на stable (а мы ему потом руки оторвём Ж-))

  8. stable достаётся на продакшн, применяются fix_permissions, crontab'ы / cronjob'ы.

    Займёт времени: около часа. зависит от размера/сложности.

Допустимые изменения Схемы 1

Порядок применения Схемы 1

Единственный даунтаймоопасный шаг - это 8. Все предыдущие шаги можно делать одновременно на нескольких сервисах.

  1. mail_redirect - самый маленький проект, меньше всего разработчиков (один forester), forester полностью в курсе.
  2. perl_modules - небольшой, понадобится в остальных сервисах, не нуждается в отдельном тестировании.
  3. website - самый толстый, позволит обкатать технологию.
  4. остальные - в алфавитном порядке.