Я прочитал многие вопросы здесь, касающиеся SO, касающиеся этой проблемы, но я не могу найти хороший совет, который бы соответствовал нашей ситуации. Я унаследовал этот рабочий поток, и я стараюсь сделать его лучше.
Наша настройка
- База кода PHP (в частности, Kohana)
- Кодовые базовые полномочия ~ 60 сайтов, каждая из которых имеет уникальные шаблоны (например, 60 QA [Quality Assurance]).
- каждый сайт имеет A-записи для разных активов и ресурсов (т.е. 8 записей A для каждого домена)
- 3 разработчиков
- 3 дизайнера
- разработчики имеют VMware-образ производственного сервера для локального развития.
- дизайнеры не
- общий сервер физического развития, используемый для QA, пост-фиксированное обновление постоянно держит этот сервер в текущем HEAD соединительной линии
- производственный сервер, обновленный до сочетания и соответствия различных версий в зависимости от того, какие функции живут.
Наш рабочий поток
- Разработчики работают локально, пока данная функция не будет завершена, а затем передаст всю функцию в магистраль для внутреннего QA.
- Дизайнеры делают небольшие изменения только для CSS/изображений/шаблонов. Они непосредственно передают ствол, QA свои собственные изменения и обновляют соответствующие файлы на производственном сервере, вообще говоря, сразу после их QA.
- Когда функции готовы к работе в прямом эфире, производственный сервер вручную обновляется до нужных номеров версий для каждого файла, связанного с этой функцией. Иногда это просто, иногда это довольно волосатое (много вызовов
svn log
для поиска зависимостей выше по течению).
Наши проблемы
- С тремя разными разработчиками, работающими с различными функциями, которые нуждаются в различном количестве QA, мы регулярно сталкиваемся с проблемами зависимостей восходящей линии.
- В любой момент времени у нас нет способа программно определить, какие функции находятся на рабочем сервере, а какие нет.
svn status -u
покажет нам, какие файлы не обновлены, но это, как правило, не четкое изображение функций.
Что я знаю
- Некоторые из наших проблем можно было бы устранить, имея производственную ветвь. Мы могли бы, по крайней мере, контролировать, какие функции были добавлены в производство, и когда, хотя это не решит проблемы с обратной связью по потоку.
- Функциональные ветки - это опция, и мы пробовали это в прошлом. В связи с тем, что для нашего программного обеспечения требуется 60 доменов QA для каждой ветки, мы сталкиваемся с проблемами управления процессом. Например, создание 480 (60 доменов x 8 записей на домен) A-записи для каждой ветки признаков.
- Отрасль разработчика также является опцией, но время нашей функции QA меняется. Я не могу точно сказать, что предыдущая функция будет вне QA, прежде чем мне нужно будет что-то сделать.
Пример зависимостей в потоке
- Разработчик A добавляет новую функцию слайд-шоу как для администратора, так и для интерфейса.
- Разработчик B добавляет новую функцию обратной связи как в админе, так и в интерфейсе.
- Обе эти функции переплетаются с логикой модели местоположения/контроллера, поэтому для этих связанных с ними файлов внесены изменения для учета обеих новых функций.
- Функция слайд-шоу входит в QA, но поддерживается некоторой надзором за развитием или областью видимости.
- Функция обратной связи вводит QA и проходит без проблем.
- Мы хотим следить за временной шкалой и использовать функцию обратной связи для производства, но мы не можем сделать это напрямую, потому что обе функции требуют изменений в модели местоположения/контроллере. То есть мы не можем просто сделать
svn update file1 file2 file3
. - Примечание.. Это простой пример, и его можно обойти, сделав некоторое обратное слияние. Зачастую наши проблемы сложны, чем это.
Информация о нескольких сайтах
- У нас есть несколько заранее определенных структурных тем, состоящих из представлений, изображений, файлов CSS, JS файлов и т.д.
- Каждому сайту назначается тема.
- Для целей брендинга и расширяемости каждый сайт может переопределять представление темы с помощью настраиваемого представления или включать дополнительные файлы CSS/JS для сайта.
Я уверен, что есть некоторые другие люди, которые боролись с подобными проблемами, и я надеюсь получить представление о вас умных людей в Интернете. Пожалуйста, не стесняйтесь задавать вопросы, если что-то, что я сказал, кажется ясным как грязь!