2009-05-03 3 views
2

Предполагая, что у вас есть два разработчика, работающие над проектом локально на своих ноутбуках (A и B). У каждого из них есть рабочие копии репо SVN, и они кодируются в VS. У каждого есть полностью работоспособная копия приложения. Они возвращаются к SVN в каждой точке остановки.Как вы создаете сборку на сервере интеграции?

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

У вас также есть производственный сервер (D), который имеет после сборки XCOPY от C.

Say код веб-приложения проекта, поэтому требует явного сборки (в отличие от веб-сайта Проект, который просто берет исходный код и строит на лету).

Как вам управлять этим на сервере интеграции (C)?

Если разработчики построили на своих машинах (A и B), затем нажмите DLL на сервер интеграции (C) ... это не сработает, потому что сервер интеграции должен принимать код от обоих и разработать общую DLL. Таким образом, весь исходный код должен попасть на сервер интеграции (C), будет построен там, а всего лишь необходимые файлы и DLL, перенесенные в производство (D).

Как вы управляете сборкой на сервере интеграции (C)? У вас есть временная сборка из командной строки? Вы устанавливаете VS на сервере интеграции (C) и создаете этот способ? Если вы делаете это из командной строки, как управлять требуемыми ссылками и другими параметрами, которые VS обычно управляет в CSPRJ или SLN-файле?

+0

Спасибо всем, кто прокомментировал. Мы закончили настройку CruiseControl, и мы используем задачу CSC в Nant для прямой сборки из командной строки на сервере интеграции. Он работает очень хорошо, и дает нам преимущество более контролируемой и стандартной сборки, которую вы получаете от кучки разработчиков, создающих их локальные копии VS. – Deane

ответ

2

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

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

0

Мы также используем крюк фиксации subversion из svn repo, который активирует модульную тестовую сборку для каждой фиксации. Мы связываем разные сборки, поэтому тест интеграции и веб-тесты выполняются, когда тесты модуля строят зеленый. Кроме того, нам бы очень хотелось объединить сборку релизов в конце всего этого, но наши интеграционные тесты недостаточно стабильны для этого (flaky back-end среды с плохими SLA в разработке - я его ненавижу!). В настоящий момент мы вручную запускаем сборки релиза. С точки зрения качества мы могли бы перейти от всех зеленых огней к серверам приемочных испытаний, но это означает, что вы, вероятно, хотите, чтобы чередующиеся изображения запускались в приемочном тесте, поскольку система сборки может создавать довольно много времени простоя, если она перераспределяет каждый раз, когда успешная фиксация прошла весь путь. (В нашем проекте мы будем работать большую часть времени с 10 утра до 2 вечера, так как в это время происходит непрерывный поток коммитов;)

+0

Но как вы на самом деле выполняете сборку? Командная строка? CC.Net? – Deane

+0

После того, как мы попробовали все варианты с открытым исходным кодом, мы закончили с баскетболом atlassians. Самые умные деньги, которые мы когда-либо проводили; вы можете потратить * много времени на попытку заставить сборку работать исправно. – krosenvold

0

Мы используем систему круиз-контроля для непрерывной интеграции на сервере интеграции. Наш сценарий круиз-контроля выполняет следующие шаги:

  • Загрузки последний код из SVN на cc.чистый сервер
  • Исполняет MSBuild файл для компиляции последней версии коды, загруженных
  • скопировать сборку выпуска в отдельной папке
  • Мы поддерживаем отдельную папку для «Release» строит, так же сценарий также совершает последнюю сборку в SVN филиал «Release»
  • Execute Тестовые [построен с использованием NUnit]
  • Отправить электронное письмо, содержащее статус сборки выполнение & тест результаты

Приведенные выше команды все настроены на нашем сервере CC.net и запланированы на выполнение 1.00 утра. Для удобства обслуживания мы использовали наш сервер CC.net на нашем сервере Integration. что также помогает нам автоматически выполнять наши тестовые тесты и отправлять результаты, если это веб-приложение. Любой поломка кода отправляется по электронной почте настроенным подписчикам, и соответствующие действия принимаются на следующий день.

Как только на сервере интеграции все будет хорошо, мы просто «обновляем» ветвь «выпуска» на сервере Production.

вы можете найти более подробную информацию о CC.Net here

, если вам нужна помощь со скриптами, я могу, конечно, помочь вам.

Смежные вопросы