Как вы начинаете работать с сервером сборки?

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

Нет сомнений в том, что одна из этих вещей - сервер сборки, вопрос в том, как далеко вам нужно идти.

  • Каковы минимальные требования для сервера сборки? (Где-то просто компилировать?)
  • Какова конечная цель для вашего сервера сборки? (По расписанию, интеграция с источником, автоматическое развертывание для тестирования/живые серверы).
  • Где хорошее место, чтобы предположить, что на данный момент у вас ничего нет?

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

Также было бы хорошо услышать о людях, которые считают, что у них есть "полная" система, которая выполняет всю необходимую им функциональность и как они собирались все это настроить с нуля.

Ответы

Ответ 1

Вы можете начать с поиска Круиз-контроль.

Там также CruiseControl.net, если это ваш яд.

По сути, вам понадобятся следующие ингредиенты:

  • Отредактированная среда (виртуальная машина/сервер. Не используйте машину разработчика, если только она вам не нужна. Даже тогда запустите виртуальную машину, если сможете. Намного проще переместить ее на сервер, когда/вашей организации)
  • Система управления версиями, которая поддерживает изменения с меткой/тегами (например, Subversion + TortoiseSVN)
  • Сценарии сборки. Это могут быть пакетные файлы, которые запускают приложения devenv.exe или msbuild.exe с помощью командной строки, или вы можете использовать что-то вроде Ant или NAnt.

В этом случае CruiseControl действует как сервер Continuous Integration и может убедиться, что у вас есть сборки, когда вы проверяете свой код, Это означает, что вы знаете, будет ли сборка более быстрой, чем если бы у вас были только ночные сборки. Вероятно, вы также должны иметь ночные сборки.

Ответ 2

Hudson - отличный CI.

Мы запускаем ферму локально, но мы начали с загрузки hudson.war и выполнили

java -jar hudson.war

Он интегрируется с SCM, системами грузовиков с грузом. Это действительно потрясающе.

Вам понадобится место на диске, если вы хотите сохранить старую сборку.

Наслаждайтесь, что это самое прямое решение CI.

НТН,  Hubert.

Ответ 3

Если вы используете Cruise Control, место для запуска - это Ant build.xml, который выполняет задание вручную.

Вам нужна система управления версиями, которая может выполнять маркированные проверки.

Вам нужны тесты JUnit для запуска с помощью задачи Ant и генерации отчетов HTML.

Ответ 4

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

Для базового сервера сборки используйте один из предложений CI, который контролирует ваш источник управления и запускает сборку всякий раз, когда обнаружено изменение. например: cruiseControl.

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

Самая успешная система, которую я имел на месте, имела 3 разных сборки: -  - тот, который выстрелил в чек - все это было сделано с помощью кода.  - по требованию, который будет создавать приложение, сгенерировать установщик, а затем поставить  установщик в общий диск для тестеров, чтобы забрать  - ежедневная сборка, выпущенная в 10 вечера. Эта:         - запускал некоторое генерирование кода для создания кода DB и С# из UML-модели         - создать код         - создал нового пользователя проверки проверки сборки на экземпляре тестового экземпляра оракула         - запустить схему приложения в db         - выпустил кучу модульных тестов         - очистил пользователя db (если тесты были успешными)         - проведен анализ охвата покрытия для создания отчета об охвате единичного кода

Программное обеспечение, которое мы использовали для этого, было NANT, CruiseControl.NET, пользовательская система генерации кода, настраиваемое приложение для построения схемы оракула и NCover для анализа кода.

Ответ 5

Начните с чтения статьи Мартина Фаулера о Непрерывная интеграция.

Мы построили такую ​​систему для крупного проектa > 2000 kSLOC, и она оказалась бесценной.

НТН

веселит,

Rob

Ответ 6

Круиз, Maven, Hudson и т.д. - все это здорово, но всегда стоит иметь стоп-решение.

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

Спецификация строительной машины не обязательно важна, если у вас нет проекта монстров. Мы стараемся сохранить время сборки до 10 минут (включая модульные тесты), и у нас есть довольно большой проект.

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

Ответ 7

Я использую Cruisecontrol.NET и buildbucript для msbuild.

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

Кроме того, мой build-сервер CruiseControl.NET также использует этот buildscript. Он проверяет регулярный интервал, если произошли изменения, внесенные в исходный контроль.
Если это произойдет, CC.NET выполняет задание "get-latest", которое я определил в buildscript, строит все, выполняет модульные тесты и выполняет статистический анализ кода (fxcop).

Мой "buildserver" - это просто старая рабочая станция. Это PIV, 3Ghz с 1 ГБ оперативной памяти, и он отлично выполняет свою работу.

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

Я думаю, что это хорошее место для начала: [http://confluence.public.thoughtworks.org/display/CC/Home;jsessionid=5201DA7E8D361EB164C40E519DA0F0DE][1]

По крайней мере, я начал искать настройки сервера сборки.:)

[1]: Главная CruiseControl

Ответ 8

Примерно по порядку - минимальный/наименее сложный с помощью более сложных

  • может получить определенный набор источников на любой машине
  • способен создать этот источник (без проблем)
  • возможность (расписание) строить каждую ночь/или какой-либо другой определенный период без вмешательства пользователя
  • Один (или более) выделенный сервер сборки (не используется как qa или dev)
  • может выполнить сборку после каждой проверки/фиксации
  • Сообщать заинтересованным сторонам о статусе сборки после сборки
  • Предоставить статус сборки в любое время
  • Создайте инсталляторы как часть сборки
  • способность развертывать/жить, если сборка хорошая.
  • Запуск модульных тестов
  • Запустите тесты продукта
  • Сообщить о результатах этих тестов
  • Анализ и отчетность статического кода ... И список можно продолжать и дальше

Не бойтесь начинать с пакетных файлов или сценариев оболочки или других специальных средств. Люди делали отличное программное обеспечение перед увлечением CI. было много хороших процессов до Хадсона и Круиз-контроля - (я не сбиваю тех или других людей - я использую Хадсона среди других), но не упускайте из виду - эти вещи здесь, чтобы помочь вам - не стать процессом властолюбия

Ответ 9

Я не мог дать вам подробностей о том, как мы установили наш сервер сборки (я был задействован только с самого начала), но:

  • Мы начали с собственной системы, реализованной в ASP.NET и .NET Windows Service, используя NAnt для выполнения реальных сборок. Фактически, большая часть рабочего процесса была реализована в NAnt (например, отправка по электронной почте людей, копирование файлов и т.д.).
  • Мы перешли на JetBrains TeamCity (там есть бесплатная версия для вырезания), которая все еще служит нам хорошо.

Мы используем его для сборок, инициируемых фиксацией: они просто создают двоичные файлы и запускают модульные тесты. Отсюда мы можем сделать полную сборку, что также делает MSI. Оттуда у нас есть системные тестовые сборки, которые проводят более глубокие тесты, в среде, построенной с использованием виртуальных машин (с отдельным контроллером домена, ядром SQL Server и т.д.). Когда тесты системы проходят, сборка становится доступной нашему отделу QA для ручного тестирования и некоторым регрессионным тестам, которые мы еще не автоматизировали.

Ответ 10

В java-пространстве я тестировал большую часть доступных сред сборки. Проблема с автоматической сборкой заключается в том, что вы нередко в конечном итоге тратите много времени на это. После того, как мы перешли на коммерческий bamboo от atlassian, мы обнаружили, что нам приходится тратить гораздо меньше времени на избавление от окна сборки, которое в наш случай оказывается очень хорошей экономикой. Bamboo также поддерживает кластеризацию, поэтому вы можете добавлять недорогие ящики по мере развития потребностей.

Ответ 11

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

В идеале, он должен просто контролировать ваш источник-систему управления, проверять код, строить, запускать некоторые тесты и публиковать результаты, не зная об этом, или, по крайней мере, не "пока не сообщит о сбое". Лично я бы предложил Хадсон (https://hudson.dev.java.net/) в качестве хорошей отправной точки, так как легко установить и запустить и иметь достойный интерфейс..

Ответ 12

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

На стороне инструментов мы в настоящее время переходим от Cruise Control к TFS.