Задать вопрос
chyngys
@chyngys
programmable hyperlinked pasta

Как командно разрабатывать php проект?

Добрый день! Подскажите пожалуйста в каком порядке разрабатываются командные проекты. Как все устроено. Пользуемся netBeans IDE через ftp
  • Вопрос задан
  • 5327 просмотров
Подписаться 39 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
copist
@copist
Empower people to give
Инфраструктура
* Создайте репозиторий на Bitbucket или GitHub.
* Создайте себе локально копию репозитория и локально поднимите базу данных с одинаковой структурой
* Если в базе требуются изменения, создавайте "миграции", которые обновят структуру данных или сами данные.
* Свои изменения по коду, так же как и миграции, отправляйте в репозиторий

Ещё есть возможность создания виртуальных серверов для разработки или использование online IDE. Решает кучу проблем, если интернет быстрый.
* https://compilr.com/ Полноценная среда разработки
* https://koding.com/ Среда разработки с предустановленным веб-сервером и элементами социальной сети
* online-php.com Online IDE
* https://codeanywhere.com/ Среда разработки. Код можно хранить в облаке, а также в Dropbox, Google Drive, FTP, github.
Другие тулзы для совместной работы в online

Промежуточные версии
Если вы географически недалеко друг от друга, то просто периодически показывайте, что у вас получается.
Если нет, пользуйтесь Skype Shared Screen, Join.me и другие аналогичные продукты, чтобы вместе смотреть и обсуждать голосом. А лучше TeamViewer, чтобы можно было вместе и посмотреть, и поправить.

Обновление сервера
Изменения на сервер устанавливайте из того-же репозитория. Не забудьте про миграции. Озаботьтесь вопросами безопасности. Хотя бы так: скрыть файлы .git
Ответ написан
Комментировать
ajaxtelamonid
@ajaxtelamonid
Laravel
1. Учим git - githowto.com/ru
2. Изучаем концепцию git flow - habrahabr.ru/post/159107 . Можно юзать GUI-клиенты с поддержкой этой фичи, для винды лучший - SmartGit, для мака - Tower.
3. Изучаем, как можно деплоить код на сервер из удалённого репозитория. Если хотите глубокого погружения - разворачивания новой копии в отдельной папке, чтобы можно было откатиться на предыдущую версию, симлинки, вот это всё - изучаете recipes на deployer.org . Если нет, юзаете deployer.org без recipes, просто с парой команд git reset HEAD --hard && git pull origin master . Или вообще хуком с гитхаба или битбакета.
Ответ написан
Комментировать
Pjeroo
@Pjeroo
Веб-разработчик
Да пребудет с вами Git и [Jira|Redmine|etc.] Откажитесь от ftp, это прошлый век и разработка таким образом чревата потерей данных - не надо так.
Ответ написан
Комментировать
1. Как уже сказали выше - git или mercurial (на bitbucket, github или на своем сервере). С основного репозитория клонируем копии на локальные машины.
2. dev-среда:
2.1 dev-сервер с поддоменами для каждого разработчика
2.2 или локальный веб-сервер (у каждого свой)
2.3 обязательно - "предпродакшн" сервер - там будут производиться проверки перед деплоем на продакшн
3. Ставите каждому нормальную IDE, которая умеет работать с локальными файлами и деплоить изменения на сервер (PHPStorm).
4. Настраиваете IDE таким образом, чтобы вы работали с локальными файлами, и при этом при сохранении изменения автоматически отправлялись на ваш dev-сервер.
5. Юнит-тесты, функциональные тесты, чтобы перед деплоем на продакшн быть уверенным в том, что кто-то из разработчиков не сломал ваш проект своими изменениями.
6. Если есть изменения в БД - миграции
7. На продакшене также клонируетесь от основного репозитория (для удобства обновления кода)

Т.о. процесс разработки будет выглядеть так:
1. Разработчик pull`ит изменения из основного репозитория
2. Что-то меняет в коде, тестируя это на своем dev-сервере
3. После покрытия кода новыми тестами, прогоняет их и заливает изменения в основную ветку
4. На предпродакшене обновляемся с основной ветки. Прогоняем все тесты.
5. Если тесты прошли - на продакшене обновляемся на тот же коммит
Ответ написан
Комментировать
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Для начала нужно хотя бы Git или SVN. Без них потом проблем не оберетесь. :)
Ответ написан
Комментировать
thestump
@thestump
программист PHP
Я бы начал разговор с менеджмента. Конечно git хорошая, полезная штука, но тем не менее git это система контроля версиями в первую очередь, а потом уже стоит говорить что при разработке командой контроль получается у разного программиста своя версия и дабы кто не слил все свои наработки на dev сервер которые заменят разработки соседа который вылил все часом раньше. Можно даже сказать что гит не заменим, но также с гитом можно работать и при одиночной работе и в этом он тоже очень хорошо поможет контролировать процесс заливки файл на сервер и внесение изменений в файлы. Поэтому хочу также сказать что внедрение одного гита конечно упростит работу, но не так что все станет кул.

Говоря о менеджменте командной разработки можно говорить о том что должен быть тим-лид (идейный вдохновитель проекта) который будет нести ответственность за его реализацию, что должен быть менеджер проектов в проекте который будет переводить с языка клиента на язык тим-лида потом объединять мнения тим-лида с мнением клиента и выписывать user-story для программиста. Однако и многое другое сказано в описании методологий командной разработки используя гибкую систему Agile с методологиями Scrum, Kanban. Думаю это то, что надо изучать для орагнизации командной работы над проектом. Тех. сторона (git, jira) процесса тоже важна, но если организация будет успешно выполнять проекты используя ftp и при этом не будет вопросов вроде ты заменил мои новые файлы на свои, а на сервере они были в единственном виде. И также не будет вопросов о безопасности где кто-то с ftp сольет файлы себе на флешку и уташит домой то никто из клиентов против не будет. А если будет методология водопад вместо Agile то клиент может пойти в другую контору с Agile потому что это реальный бонус для клиента и разработчиков.

Если уж совсем все хреново то как крайний вариант можно нанять опытного тим-лида с опытным менеджером проектов которые наладят весь процесс Agile с методологиями Scrum, Kanban для вас.

P.S. мы тоже на работе используем NetBeans но вместо ftp - git.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы