Инструменты, которые помогут небольшому магазину набрать больше баллов по «Тесту Джоэла» - PullRequest
16 голосов
/ 18 августа 2008

Вопросы с 1 по 4 по Joel Test , на мой взгляд, все о используемых инструментах разработки и системе поддержки для разработчиков:

  1. Используете ли вы контроль источника?
  2. Можете ли вы сделать сборку за один шаг?
  3. Вы делаете ежедневные сборки?
  4. У вас есть база данных ошибок?

Мне просто любопытно, какие бесплатные / дешевые (но хорошие) инструменты существуют для небольших магазинов разработки, у которых нет больших банковских счетов, чтобы использовать для получения положительного ответа на эти вопросы.

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

Я использую NAnt для своих более крупных проектов, но мне еще предстоит настроить скрипт для сборки моих инсталляторов, а также запустить инструменты обфусификации за один шаг. Любые другие предложения?

Если вы можете ответить «да» на здание за один шаг, я думаю, что создание ежедневных сборок будет простым, но какие инструменты вы бы порекомендовали для автоматизации этих ежедневных сборок?

Для команды из одного или двух человек уже обсуждалось на SO, что вы можете использовать FogBugz On Demand, но какие еще существуют решения для отслеживания ошибок для небольших команд?

Ответы [ 14 ]

19 голосов
/ 18 августа 2008
  1. контроль источника: Subversion или Mercurial или Git
  2. автоматизация сборки: NAnt , MSBuild , Rake , Maven
  3. непрерывная интеграция: CruiseControl.NET или Continuum или Дженкинс
  4. отслеживание проблем: Trac , Bugzilla , Gemini (если это должен быть .NET и free-ish)

Не забудьте автоматическое тестирование с NUnit , Fit и WatiN .

4 голосов
/ 18 августа 2008
3 голосов
/ 19 августа 2008

Мой предпочтительный стек:

1) Subversion. Я заинтригован по поводу управления распределенным источником, но у меня еще не было возможности попробовать что-либо в гневе. Для централизованного решения SVN является надежным.

2) Муравей. Maven - это радость, когда он работает, но как старый муравейник я нахожу, что maven трудно следовать, когда что-то идет не так.

3) Гудзон. Пока не упоминалось, но определенно стоит исследовать. Невероятно удобный и активно поддерживаемый инструмент. PreviousLy мы заплатили за Anthill Pro, который казался ненадежным, и каждый раз, когда он облажался, было трудно его исправить.

4) Мы платим за джира. Не дешевый, но гораздо более удобный, чем варианты с открытым исходным кодом, на которые мы смотрели, и очень гибкий.

2 голосов
/ 25 мая 2009
  1. Гит
  2. Make
  3. Крон
  4. Trac

Я человек из нескольких слогов; -)

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

Эта функция мне нравится в git. Я думаю, что он действительно присутствует только в распределенных системах контроля версий; использование DVCS не означает, что вам действительно нужно заниматься распределенной разработкой.

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

Если вам нужны ежедневные сборки, поместите команду build в свой cron.daily. Установите перехватчик procmail для обработки почты от cron, если это необходимо.

Для отслеживания ошибок используйте $(apt-cache search bug tracking). В основном, если на коробке написано «средство отслеживания ошибок» и вы знаете, что другие люди используют его, вероятно, оно будет работать нормально. Среди постоянных клиентов - Багзилла, Богомол и Трак.

2 голосов
/ 18 августа 2008

Возможно, вы захотите посмотреть на существующий мой вопрос для и найти альтернативу Team System . Там также есть множество рекомендаций.

2 голосов
/ 18 августа 2008

Мой инженерный стек:

  1. Git (я люблю GitHub, но Git не требует размещенного решения)
  2. Грабли
  3. CruiseControl.rb
  4. FogBugz

Без сомнения, на этот выбор влияет мой стек разработки, который чаще всего включает в себя Ruby, Rails, SQLite, Firefox и OSX.

1 голос
/ 18 августа 2008

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

0 голосов
/ 08 июня 2009
  1. контроль источника: cvs
  2. build gnu make
  3. задание cron, которое вызывает bash-скрипты
  4. Bugzilla
0 голосов
/ 19 августа 2008

Для автоматизации сборки и непрерывной интеграции взгляните на TeamCity из Jetbrains .

Он имеет множество функций и действительно прост в настройке и использовании.

Если вы используете Visual Studio 2005/2008, он создаст ваше решение напрямую, без необходимости в дополнительных сценариях (если сборка - это все, что вам нужно.)

Он также будет выполнять ваши модульные тесты и собирать статистику об успешности сборки, времени выполнения модульных тестов и т. Д. И т. Д.

Лучшее из всех: Pro-версия бесплатна для команд до 20 пользователей и 3 агентов сборки.

0 голосов
/ 19 августа 2008

В настоящее время я использую SVN, но у меня, как правило, было много проблем с проверками на сетевом диске на сервере разработки. Как правило, существуют проблемы с блокировками, которые требуют много рыбалки вокруг, чтобы исправить. Возможно, использование метода доступа WebDav облегчит некоторые из этих проблем, но я еще не экспериментировал.

Любой из Bugzilla, Trac или Fogbugz поможет вам с отслеживанием ошибок, и каждый предложит функцию экспорта, так что вы всегда сможете передумать. Кроме того, если вы можете заставить свою команду полностью скупиться, программное обеспечение для управления временем также может пригодиться для посмертных и т. Д. (Если каждый заинтересован в полном участии.

...