Инструменты, которые помогут небольшому магазину набрать больше очков в "Тесте Джоэла"
На мой взгляд, вопросы с 1 по 4 о тесте Джоэла касаются используемых инструментов разработки и системы поддержки для разработчиков:
- Вы используете контроль версий?
- Вы можете сделать сборку за один шаг?
- Вы делаете ежедневные сборки?
- У вас есть база данных ошибок?
Мне просто любопытно, какие бесплатные / дешевые (но хорошие) инструменты существуют для небольших магазинов разработчиков, у которых нет крупных банковских счетов, чтобы использовать их для получения положительного ответа на эти вопросы.
Для управления исходным кодом я знаю, что Subversion - отличное решение, и если вы работаете в одном магазине, вы можете даже использовать SourceGear's Vault.
Я использую NAnt для своих более крупных проектов, но еще не настроил скрипт для сборки моих инсталляторов, а также запустил инструменты обфускации за один шаг. Любые другие предложения?
Если вы можете ответить "да" на сборку за один шаг, я думаю, что создание ежедневных сборок будет простым, но какие инструменты вы бы порекомендовали для автоматизации этих ежедневных сборок?
Для команды из одного или двух человек уже обсуждалось на SO, что вы можете использовать FogBugz On Demand, но какие еще решения для отслеживания ошибок существуют для небольших команд?
14 ответов
- контроль версий: Subversion или Mercurial или Git
- автоматизация сборки: NAnt, MSBuild, Rake, Maven
- постоянная интеграция: CruiseControl.NET или Continuum или Jenkins
- отслеживание проблем: Trac, Bugzilla, Gemini (если это должен быть.NET и free-ish)
Не забудьте автоматическое тестирование с NUnit, Fit и WatiN.
Мой предпочтительный стек:
1) Subversion. Я заинтригован по поводу управления распределенным источником, но у меня еще не было возможности попробовать что-либо в гневе. Для централизованного решения SVN является надежным.
2) Муравей. Maven - это радость, когда он работает, но как старый муравейник я нахожу, что maven трудно следовать, когда что-то идет не так.
3) Хадсон. Пока не упоминалось, но, безусловно, стоит изучить. Невероятно удобный и активно поддерживаемый инструмент. PreviousLy мы заплатили за Anthill Pro, который казался ненадежным, и каждый раз, когда он облажался, было трудно его исправить.
4) Мы платим за джира. Не дешевый, но гораздо более удобный, чем варианты с открытым исходным кодом, на которые мы смотрели, и очень гибкий.
- Гит
- Делать
- Cron
- Trac
Я человек из нескольких слогов;-)
Убедитесь, что вы используете какой-то контроль версий, где разработчики могут легко создавать частные ветки, а затем взять свою частную ветку и сжать ее в единый коммит в основной ветке. Таким образом, отдельные разработчики - в отличие от организации - могут получить преимущества контроля версий, не загрязняя чужой код (и не замедляя свою работу) с нарушенными коммитами.
Эта функция мне нравится в git. Я думаю, что он действительно присутствует только в распределенных системах контроля версий; использование DVCS не означает, что вам действительно нужно заниматься распределенной разработкой.
Что касается одношаговой сборки, make является инструментом сборки по умолчанию, и он работает довольно хорошо для большинства задач. Я бы пошел с этим, если у вас нет веских причин не делать этого.
Если вам нужны ежедневные сборки, поместите команду build в свой cron.daily. Установите ловушку procmail для обработки почты от cron, если это необходимо.
Для отслеживания ошибок используйте $(apt-cache search bug tracking)
, В основном, если на коробке написано "средство отслеживания ошибок", и вы знаете, что другие люди используют его, это, вероятно, будет работать нормально. Среди завсегдатаев - багзилла, богомол и трак.
У меня нет никаких инструментов, чтобы предложить, но у меня есть предложение о ежедневных сборках. Я всегда отвечаю "да" на этот вопрос, хотя у нас нет ежедневных сборок. Вместо этого мы делаем сборку каждый раз, когда кто-то делает коммит. Таким образом, мы обнаруживаем любые проблемы практически сразу. Если у какого-либо из наших проектов когда-либо будет достаточно LOC, то сборка займет более чем тривиальное время, выполнение этого также будет изящно ухудшаться в направлении ежедневной сборки.
Вы можете посмотреть на мой существующий вопрос, чтобы найти альтернативу Team System. Там также есть много рекомендаций.
Мой инженерный стек:
- Git (я люблю GitHub, но Git не требует размещенного решения)
- Грабли
- CruiseControl.rb
- FogBugz
Без сомнения, на этот выбор повлиял мой стек разработки, который чаще всего включает в себя Ruby, Rails, SQLite, Firefox и OSX.
Для автоматизации сборки и непрерывной интеграции взгляните на TeamCity от Jetbrains.
У него много функций, и его очень просто настроить и использовать.
Если вы используете Visual Studio 2005/2008, он создаст ваше решение напрямую, без необходимости в дополнительных сценариях (если сборка - это все, что вам нужно).
Он также будет выполнять ваши модульные тесты и собирать статистику об успешности сборки, времени выполнения модульных тестов и т. Д. И т. Д.
Лучше всего: Pro-версия бесплатна для групп до 20 пользователей и 3 агентов сборки.
Я не думаю, что вам действительно нужно запутывать на.Net больше ( см. Другой ответ)
Я бы не стал рассматривать Vault, на данный момент SVN действительно лидер на рынке (и бесплатный). Git выглядит довольно многообещающе, но в настоящее время это командная строка только с крутой кривой обучения.
MSBuild превосходит NAnt для.Net 2 или 3.5
CC.Net отлично.
Ознакомьтесь с этими статьями о непрерывной интеграции с использованием MSBuild, CruiseControl.NET, FxCop, NUnit, NCover и Subversion...
Хорошим трекером, который был относительно недорогим, был axoSoft OnTime. Я использовал его в течение многих лет, прежде чем получить MS TFS.
Нант и CruiseControl являются основными элементами моей среды.
В настоящее время я использую SVN, но у меня было много проблем с проверками на сетевом диске на сервере разработки. Как правило, существуют проблемы с блокировкой, которые требуют много рыбалки вокруг, чтобы исправить. Возможно, использование метода доступа WebDav облегчит некоторые из этих проблем, но я пока не экспериментировал.
Любой из Bugzilla, Trac или Fogbugz поможет вам с отслеживанием ошибок, и каждый из них предлагает функцию экспорта, так что вы всегда можете передумать позже. Кроме того, если вы можете заставить свою команду полностью скупиться, программное обеспечение тайм-менеджмента также может пригодиться для посмертных и т. Д. (Если каждый заинтересован в полном участии.
- контроль источника: cvs
- построить гну сделать
- задание cron, которое вызывает скрипты bash
- Bugzilla