Итак, я работаю в небольшой компании по организации мероприятий и развлечений и недавно взял на себя ответственность за команду разработчиков (PHP-приложения, большую часть времени). Текущий рабочий процесс выглядит примерно так:
Я нахожу это довольно ужасным, поэтому мне пришла в голову эта идея:
Что-то совершенно не так с таким рабочим процессом? Я использовал Mercurial для своих собственных проектов, но никогда раньше не использовал его в команде, и я новичок во всех этих вещах, связанных с управлением командой. Буду признателен за некоторые предложения.
Спасибо,
Крис
Очень важно, чтобы ваши разработчики работали локально. Самым большим преимуществом PHP является короткий цикл обратной связи, и если им приходится помещать потенциально испорченный материал в общий блок разработки, то это прерывает короткий цикл обратной связи. Возможно, вы сможете использовать что-то вроде Vagrant, чтобы упростить настройку среды для разработчиков на их машинах разработки.
Что касается остального: я бы отделил ваш сервер разработки / тестирования от вашего центрального хранилища. Причина в том, что, работая над своим проектом, вы, ребята, начнете использовать ветки для разных версий выпуска. Вполне вероятно, что будет «Стабильная» / текущая ветвь вашего проекта и «Особенная» ветка (Новые вещи, над которыми вы работаете). Выпуск напрямую на сервер разработки не имеет смысла даже для базового разветвленного рабочего процесса, как я предлагаю.
Другая большая проблема, которую я вижу здесь, заключается в том, что все ваши разработчики могут делать релизы на производственном сервере. Как правило, даже в небольших организациях перед выпуском на рабочий сервер назначается назначенное лицо и определенные критерии. Я бы порекомендовал вам сделать это. Также перед выпуском вы, ребята, должны ВСЕГДА отмечать версию, которую вы выпускаете. Это должно быть частью вашего рабочего процесса выпуска.
Другая вещь, которую вы не упоминаете, это отслеживание проблем. Насколько я понимаю, JIRA является золотым стандартом для программного обеспечения для отслеживания проблем. Нам нравится использовать JIRA и Fisheye для управления нашим кодом и координации коммитов с конкретными проблемами.
Вот рабочий процесс, с которым я работал в течение нескольких лет …
Несколько производственных серверов,
1 х Project (тестовый) сервер,
Git (Bitbucket),
Дженкинс,
JIRA (отслеживание проблем),
HipChat (командный чат)
1 х Master Git Branch,
1 х Project Git Branch
Я упомянул Jenkins выше, это может быть слишком далеко впереди для команды разработчиков, желающих внедрить новый процесс, а сейчас я бы предложил что-то более простое, такое как FTPloy, здесь есть довольно хорошее руководство по его настройке: https://daveismyname.com/website-deployment-with-bitbucket-and-ftploy-bp