Как мне управлять разработкой и развертыванием моего сайта в составе группы? - PullRequest
6 голосов
/ 15 апреля 2011

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

Что касается моего прошлого, я студент второго курса в университете, знакомый с SQL, C ++, Visual Basic и некоторыми PHP. Один из моих школьных проектов на летний семестр включает создание веб-приложения, которое позволяет пользователям входить в систему и планировать определенные временные интервалы через Интернет. Как правило, я был единственным человеком, работающим над проектом, но в этом случае я буду частью группы. Поскольку мы все относительно плохо знакомы с работой в команде, я бы хотел настроить контроль над исходными кодами для своей группы, чтобы мы не все где-то работали на общем диске. Кроме того, я хотел бы убедиться, что все мы можем протестировать наши изменения на каком-либо сервере разработки, на котором размещен экземпляр нашего веб-сайта.

Мой настоящий вопрос касается набора инструментов, который мы должны использовать для достижения этой цели. Как группа, мы наиболее знакомы с PHP и MySQL, поэтому в конечном итоге мы будем использовать это для кода и базы данных. Я использовал SVN в прошлом для личного использования, но члены моей группы не очень хорошо знакомы с контролем версий. Вероятно, мы будем придерживаться чего-то простого, например, Excel, для управления проектами и отслеживания ошибок. В идеале мы хотели бы, чтобы инструменты были бесплатными и с открытым исходным кодом.

Как в группе мы должны управлять созданием реального приложения? Могу ли я использовать какие-либо методы, которые позволят любому из нас переместить файлы на наш компьютер для разработки и отследить, кто это сделал, чтобы мы не перезаписывали изменения друг друга? Если это невозможно, один из нас напишет несколько сценариев, чтобы справиться с этим, но я бы хотел избежать создания в основном отдельного программного приложения, которое будет использоваться только для управления нашим проектом. Еще одна проблема, которую я предвижу, будет обновление базы данных, работающей на компьютере разработчика. Существуют ли какие-либо стандартизированные методы, которые мы можем использовать для управления нашими сценариями SQL среди нас четверых?

Я не ожидаю очень длинного ответа здесь (в конце концов, это наш проект!), Но любые полезные советы будут с благодарностью. Как только я вернусь из отпуска, я с нетерпением жду начала! Спасибо!

Ответы [ 4 ]

3 голосов
/ 15 апреля 2011

Я рекомендую вашей группе использовать систему контроля версий для синхронизации вашего кода. Вы можете настроить свой собственный сервер или просто воспользоваться бесплатным провайдером, таким как github , Google code или bitbucket .

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

Лучший способ управлять сценариями SQL - это разбить их на отдельные файлы и также поместить их под контроль исходного кода. Вы можете создавать .sql файлы или использовать инструмент для управления этими изменениями - например, взгляните на Ruby on Rails 'Migrations . Это может потребовать некоторых усилий для настройки, но вы поблагодарите себя позже, если будете работать над проектом любого размера ...

2 голосов
/ 15 апреля 2011

Что касается контроля версий / версий, я бы порекомендовал Subversion.Есть некоторые инструменты графического интерфейса, которые они могут использовать, или даже webDAV для доступа к SVN.Это позволит пользователям совместно редактировать файлы, а также даст вам подробную информацию о том, кто, что, когда и почему редактировал ... SVN также очень хорошо справится со слиянием файлов, которые были сохранены одновременно.

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

Я предлагаю всем прочитать первую главу из: http://svnbook.red -bean.com / ru / 1.5 /

, и они должны иметь хорошее представление о том, что происходит,

Мне также любопытно узнать, что люди говорят о базе данных

2 голосов
/ 15 апреля 2011
  1. Составьте план того, как бы вы это сделали, если бы это был только вы.
  2. Разделите план на задачи, выполнение которых занимает около 3-4 часов.Убедитесь, что у каждой задачи есть измеримая цель.
  3. Разделите задачи.Постарайтесь сортировать их, если это возможно, чтобы максимизировать эффективность разработчика.
  4. Научите их использовать систему контроля версий.Объясните им, что они будут использовать это (возможно, не svn, но ЧТО-ТО) через несколько лет, чтобы они могли также научиться, как сейчас.Кроме того, это поможет в каждом групповом проекте, который они выполняют в будущем.
  5. Создайте сценарий для построения и запуска ваших тестов.Также скрипт вашего развертывания.Это гарантирует, что у вас будет работать тот же механизм, что и при тестировании, что увеличивает количество дефектов, обнаруженных при тестировании.(Это в отличие от того, чтобы позволить им существовать, но не найти в тестировании.)
  6. Вы упомянули обновление базы данных разработки.Вполне разумно часто выгружать базу данных разработки с обновлением с живого видео.Вы можете сделать 3 окружения.Разработка, постановка и производство.База данных разработки будет содержать сфабрикованные данные испытаний.Промежуточная база данных будет иметь живую копию (возможно, в течение нескольких дней.) И, конечно, живая - это живая.
  7. Excel отлично работает как «база данных ошибок».Подумайте о том, чтобы поместить его в систему контроля версий, которой вы манипулируете и совершаете.Это даст вам хорошее представление о том, что произошло со временем, и вы сможете быстрее исправить ошибки.
0 голосов
/ 15 апреля 2011

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

Похоже, вы ищете Управление сборкой . В случае с PHP настоящая «сборка» так же проста, как и сбор исходных файлов, поскольку язык интерпретируется; нет компиляции.

Так получилось, что я являюсь одним из разработчиков BuildMaster , инструмента, который в основном решает все проблемы, которые вы перечислили в своем вопросе ... и звучит так, будто он будет бесплатным в вашем дело под лицензией Community Edition. Я постараюсь рассмотреть некоторые из ваших индивидуальных проблем и узнать, как можно использовать BuildMaster в качестве решения.

Контроль источника

Как подсказывают другие, вы должны его использовать. Уловка, когда дело доходит до развертывания, состоит в том, чтобы установить некоторую форму непрерывной интеграции , чтобы каждый раз, когда кто-то регистрировался, создавалась новая «сборка». В BuildMaster вы можете настроить это для любого поставщика управления исходным кодом, который вы хотите.

Отслеживание ошибок / ошибок

Excel будет работать, но это не оптимальное решение. Существует множество бесплатных инструментов отслеживания ошибок, которые можно использовать для управления ошибками и функциями. С BuildMaster вы можете связать свой список ошибок и функций с приложением по номеру выпуска, чтобы вы могли просматривать их в инструменте в любое время. Он также может изменять статусы выпуска и автоматически добавлять описания, если хотите.

развертывания

Используя BuildMaster, вы можете создавать планы автоматического развертывания для своей среды разработки, например ::

  1. Получить последний исходный код
  2. Создать артефакт
  3. Копирование файлов на компьютер разработчика
  4. Развертывание файлов конфигурации
  5. Обновление базы данных

Самое приятное то, что после того, как вы настроите их для других сред (точка свечения № 6), отправка всего кода и обновлений базы данных так же проста, как нажатие кнопки.

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

Обновления базы данных

Не удивительно, что BuildMaster также обрабатывает их, используя модуль сценариев изменений. Когда член вашей команды создает сценарий (например, ALTER TABLE ADD [Blah] INT NOT NULL), он может загрузить его в BuildMaster, а затем запустить в любой среде, которую вы создали.

Самое приятное, что вы можете добавить шаг в ваше автоматическое развертывание и больше никогда не беспокоиться об этом. Как упоминает Джастин, вы можете использовать .sql файлы для вашего объектного кода (хранимые процедуры, представления, триггеры и т. Д.), И они будут выполняться при каждой сборке, так как они по сути являются кодом в любом случае. Вы можете сохранить их в системе контроля версий.

Конфигурационные файлы

Одним из аспектов всего этого, которым вы, возможно, пренебрегали (но неизбежно столкнетесь), является работа с файлами конфигурации. В PHP вы можете иметь файл .htaccess, файл php.ini, файл prepend.php или свернуть свой собственный файл конфигурации. Так как по определению файлы конфигурации должны меняться между вашим персональным компьютером и машиной разработки, получение их из системы контроля версий не обязательно будет работать без некоторого взлома а-ля:

if (DEV) {
    // do one thing
}
else if (PROD) {
    // do another
}

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

Автоматизированное тестирование

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


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...