Коллективная разработка сайта, как лучше организовать?

T0
На сайте с 20.03.2013
Offline
0
701

Всем привет! Может кто сталкивался с организацией совместной разработки сайта 2-мя и более людьми? Возможно подскажите идеи как правильнее и удобнее сделать что то подобное:

В распоряжении есть:

- 1 сервер (хостинг)

- 2 или более разработчика

Хотелось бы получить:

- Ведение разработки на локальных машинах (каждый свою часть)

- Сведение результатов на сервере в тестовой реализации

- Выведение одобренных результатов на сервер в рабочую версию

- Не трудное подключение дополнительного разработчика к проекту

Я совсем немного сталкивался с работой через Github, да и то настройкой занимался не я.

Ранее для меня такой задачи особо не стояло, так как все было в одних руках.

По идее как я себе это представляю:

- На каждую клиентскую машину ставится программа для работы с репозиториями

- На сервере создается тестовый "сайт" и рабочий "сайт"

- К сайтам на сервере подключается репозиторий, к тестовому Dev, а к рабочему Master (вот тут я не очень понимаю что есть реально и как правильно)

- Все рабочие изменения разработчиков загружаются в Dev ветку, после чего могут быть объединены и загружены в Master

Непонятные моменты:

- Как подключается репозиторий к серверу для обновления кода на сервере.

- Как правильно распределить участки проекта между разработчиками, при условии разработки на основе CMS (то есть основа есть, надо ее грамотно разделить для редактирования разработчиками)

Под разработчиками я понимаю:

- Верстальщика (доступ к стилям шаблона, картинкам)

- Редактора файлов шаблона аля программера (доступ к .tpl файлам шаблона)

- Фронт-пргграммера (доступ к папкам со скриптами)

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

Буду рад получить ответы!)

doctorpc
На сайте с 12.07.2009
Offline
112
#1
К сайтам на сервере подключается репозиторий, к тестовому Dev, а к рабочему Master (вот тут я не очень понимаю что есть реально и как правильно)

Имхо, достаточно одного репозитория. Во время обновления Dev и Master вы указываете, ревизию или branch/tag откуда брать код.

Как подключается репозиторий к серверу для обновления кода на сервере.

Точно также как и любой девелопер, принимающий участие в разработке. С помощью клиента или с помощью прямого запроса конкретной ревизии.

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

Думаю, идеальный ответ на этот вопрос хотел бы получить любой project-manager. У каждого свои подходы, основанные на опыте. И в двух предложениях не расскажешь.

Dreammaker
На сайте с 20.04.2006
Offline
569
#2

Я вот накануне описывал схему /ru/forum/comment/11568189, не до конца то, что вам нужно, но похоже.

Из того, что не рассмотрено:

test0:
- К сайтам на сервере подключается репозиторий, к тестовому Dev, а к рабочему Master (вот тут я не очень понимаю что есть реально и как правильно)

как выше написали - это не разные репозитории - это будут разные ветки.

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

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

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

Я сам программер, поэтому в случае чего могу ремонт провести, поэтому накопившиеся изменения заливаются на выходных.

test0:
Я совсем немного сталкивался с работой через Github, да и то настройкой занимался не я.

Я работаю с mercurial, как-то так исторически сложилось, он мне более удобен, да и битбакет для маленьких команд (до 5 человек) бесплатен, в отличие от github.

Но суть думаю не сильно меняется.

test0:
- Все рабочие изменения разработчиков загружаются в Dev ветку, после чего могут быть объединены и загружены в Master

Если делать так чтобы к определённому моменту все запланированные тикеты были закрыты, то можно просто обновляться из основной ветки.

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

test0:
- Как подключается репозиторий к серверу для обновления кода на сервере.

Коммит на локале, пуш на битбакет от своего пользоваетля. На битбакете создаётся рид-онли пользователь. На тестовом сервере в конфиге указываем адрес репозитория на битбакете, и логин/пароль вышеуказанного рид-онли пользователя.

Также на тестовом сайте создаём скрипт pull.sh

#!/bin/bash
cd /var/www/user/data/www/testsite.ru
/usr/bin/hg pull -u

даем ему права на исполнение.

В крон для пользователя user заносим /var/www/user/data/www/testsite.ru/pull.sh >/dev/null 2>&1

(почти скопировал из ISPManager, может если вручную как-то по-другому будет выглядеть). И даём задание дергать файл каждую минуту.

Теперь крон вызывает баш-скрипт, тот используя логин/пароль из конфига в .hg лезет на битбакете стягивает изменения и обновляет до текущей версии тестовый сайт. Где-то у нас там ещё настроено, что после успешного обновления (когда было что обновлять) на почту приходит уведомление с названием коммита/коммитов и изменениями, которые применены.

Продакшн обновляется вручную, хотя скорее всего и его будем обновлять примерно так же через время.

Сейчас ещё планируем внедрить автоматическое тестирование через Selenium и ttp://codeception.com/, ибо ручное занимает лишнее время, так хоть как-то уменьшим время на тестирование.

p.s. Ну и как в том топике рекомендую методику Канбан через trello.com - этот сервис среди всех пересмотренных мною канбан-сервисов наиболее развитый. Не хватает разве что тайм-треккинга, как в одном другом посмотренном проекте, но все остальное с лихвой перекрывается.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий