Локальное / Dev / Live развертывание - лучший рабочий процесс - PullRequest
3 голосов
/ 28 апреля 2010

ситуация

Наша маленькая компания состоит из 3 человек, у каждого из которых есть локальный веб-сервер, и большинство проектов (предыдущих и текущих) находятся на одном сетевом диске ПК. У нас есть виртуальный сервер, где расположены сайты некоторых наших клиентов и наш сайт.

Наш стандартный рабочий процесс:

Coder PC → Programmer localhost → dev domain (client.company.com) 
                                        ↓
                                  live version (client.com)

Часто бывает, что два или три парня работают над одними и теми же проектами одновременно - один на версии dev, два на localhost.

Когда закончим, мы пытаемся синхронизировать файлы в версии dev и в идеале не mess ( спасибо ILMV :]) до любых файлов, которые ** knock knock * * не бывает часто.

А потом один из нас развертывает версию dev на живом веб-сервере.

вопрос

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

Нам, вероятно, также понадобится использовать Mac в процессе, поэтому, если это не будет проблемой, это будет еще лучше.

Спасибо

Редактировать: одна из важных частей - это перевод веб-сайта с dev на живой после любого рабочего обновления. Редактировать: я проверю ответ MaxVt, если больше ничего не появится :)

1 Ответ

7 голосов
/ 28 апреля 2010

Это сложный вопрос, но, как правило, есть три основных улучшения, которые необходимо внести, чтобы улучшить свои процессы.

Использовать контроль версий

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

Выберите версию системы и начните ее использовать. Менее важно, какой из них (из бесплатных - SVN в порядке и более «централизованный», git или mercurial великолепны и обеспечивают большую гибкость), но более важно, чтобы любое изменение, независимо от его размера, всегда проходило контроль версий.

Упрощение продвижения, развертывания и отката

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

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

Ввести тестирование

Откуда вы знаете, что только что развернутая вами ревизия не только правильно компилируется, но и работает как положено? Для каждого нетривиального проекта у вас должны быть тесты для проверки наиболее важных функций (вход в систему, добавление материалов, создание отчетов и т. Д.), Чтобы убедиться, что изменения, внесенные разработчиками, позволили сайту функционировать должным образом.

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


Как только вы это сделаете, вы прошли долгий путь к упорядоченному, предсказуемому и устойчивому процессу разработки. Ваши клиенты и ваши разработчики будут вам благодарны:)

...