Какие инструменты Вы используете для faciliate Непрерывной интеграции (CI)?

Принятие Вас делает CI, в заголовке действительно говорится все это: Какие инструменты Вы используете?

В нашем случае мы - магазин разработки.NET и используем

Однако мы поражаем некоторые проблемы производительности с Подверсией и количеством агентов сборки Круиза и конвейеров, которые мы выполняем, так смотрят на использование Мерзавца в бэкенде для облегчения этого. Однако версия Windows Мерзавца дает нам проблемы (кажется немногим также "бета"), таким образом, мы думаем, что должны пойти с версией Linux.

Оборотная сторона этого - то, что это далее увеличивает набор навыков, требуемый любого, кто собирается администрировать эту установку.

Так, какой инструмент (инструменты) Вы используете для своего управления версиями и автоматизированной сборки/развертывания? Также упомяните, какова Ваша платформа разработки.

9
задан Richard Everett 9 February 2010 в 11:22
поделиться

5 ответов

Можно использовать трансформатор (обработка ошибок и дополнительная заводская конфигурация опущены для ясности):

Node node = ...;
StringWriter writer = new StringWriter();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new DOMSource(node), new StreamResult(writer));
String xml = writer.toString();
// Use xml ...
-121--1385077-

Вместо написания вспомогательных методов, таких как выборка , которые возвращают значение, заставьте их принять другую функцию, «приемник», чтобы передать их результат:

function fetch(receiver) {

    $.getJSON("blah...", function(data) {

        receiver(data);
    });
}

Очевидно, что это избыточно, потому что именно так уже работает getJSON , но в более реалистичном примере функция fetch будет каким-то образом обрабатывать или фильтровать результат перед его передачей.

Тогда вместо:

document.write(fetch());​

Вы бы сделали:

fetch(function(result) { document.write(result); });

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

Если вы заинтересованы, вот запись в блоге об использовании генераторов для приведения в порядок асинхронного кода .

-121--3842604-

Командный город в качестве сервера CI - бесплатно для ограниченного количества проектов.

Нет неприятной конфигурации XML, вместо этого хороший веб-GUI. Командный город также может быть сконфигурирован с различными системами сборки, NAnt, MSBuild et al. Также можно настроить другие инструменты для работы с TC, такие как выполнение модульных тестов через литник.

4
ответ дан 4 December 2019 в 13:47
поделиться

Методология разработки программного обеспечения v


Они ортогональны.

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

-121--4090497-

Кроме статических классов и структуры , почему бы не использовать файлы ресурсов для постоянных последовательностей? Доступ к ним очень прост в виде SomeNamespace.ResoureName.KeyName , и в зависимости от того, где они находятся в проекте, ими можно управлять извне без повторной компиляции при необходимости...

-121--1071373-

На моей текущей работе (контракт для очень большой компании. О 90% Microsoft/.NET dev), моя группа автоматизирует сборки и модульное тестирование с помощью StartCity на наших новых приложениях.

Я установил это и начал с MSBuild на TC, но я пытаюсь подтолкнуть к Nant файлы сборки и некоторые другие стандарты на новых проектах. (используя шаблоны в VS2008, чтобы создать столько настроек построения при создании нового проекта)

Система управления версиями здесь страшна. Многие группы по-прежнему используют VSS (включая мой, что не весело) с корпоративным толчком к TFS в этом году. Я бы предпочел пойти на DVCS (git или что-то в этом роде), но это не произойдет в этой среде. На самом деле, я не уверен, что StartCity останется, как только компания перейдет на 100% TFS. Но, как я думаю, мы будем настолько продвинуты с CI к тому времени, когда это произойдет, что TFS может не покрыть наши потребности. Но, возвращаясь к StartCity, он поддерживает VSS просто прекрасно, и это сработало.

Что касается развертывания, я путаюсь с надстройкой Microsoft Web Deployment Project , а также с конфигурацией в Nant. Подход Нанта, очевидно, более гибок, но пытаться научить разработчиков connect-the-dot скриптам Нанта иногда бывает немного.

Надеюсь, что это немного поможет. «Демо» (demo), представляющее собой StartCity, бесплатно предоставит вам 20 конфигураций для сборки.

Должен отметить, что пробовал CruiseControl.net и Хадсона. Оба являются прекрасными приложениями (и бесплатными), но я знал, что простота настройки новой сборки в StartCity потребуется для остальных в моей группе. В противном случае люди просто не будут делать CI, как только я уйду.

2
ответ дан 4 December 2019 в 13:47
поделиться

Мой магазин - это Java / Windows, с использованием программного обеспечения IBM; ClearCase, WAS, WMB, WPS. Мы пошли с Хадсоном, и он сделал несколько замечательных вещей для повышения производительности.

Мы также используем небольшую мягкую игрушку, в данном случае поющего Морозного Снеговика высотой около 12 дюймов.Каждый раз, когда разработчик нарушает сборку, как определил Хадсон, у него есть 15 минут, чтобы навести порядок, или Фрости оказывается на своем столе. Фрости остается там, пока кто-нибудь не облажается таким же образом.

У меня был Frosty один или два раза, как и вся команда; это помогает мысленно поощрять более совершенные методы кодирования или, по крайней мере, методы кодирования, которые не мешают вашим товарищам по команде.

1
ответ дан 4 December 2019 в 13:47
поделиться

Я лично использую AddModelError («» - Я не знаю, откуда _FORM берется? - и ValidationSummary () не является черной магией - вместо этого я использую собственный помощник, который, например, включает в выходные данные конкретные (пользовательские) сообщения об исключениях. Помощник очень прост в написании - простой цикл foreach над ModelState - так что вы можете рассмотреть возможность написания собственного. Там вы можете показывать на уровне формы, собственности или что угодно.

-121--4435â-

Ваш вопрос немного неясен. Под колпаком инструкции процессора носят императивный характер. Если предполагается, что ваш код будет выполняться на машине фон Неймана, он в конечном итоге должен быть запущен как императивный код.

Возможно создание машины (с определенной архитектурой), которая поддерживает эти операции. Фактически, LispM был разработан, чтобы помочь запускать программы Lisp. Хотя я не знаком с аппаратными характеристиками LispM, это, вероятно, квалифицируется как предоставление некоторых примитивных операций на более декларативном уровне.

-121--4690758-

Я использовал круизные control.net, nunit, fxcop, Ncover, xmlpreprocess, nant и несколько других перед переходом на TFS, где я делаю много развития sharepoint. Я не инвестировал в процесс CI для разработки sharepoint для ограничения нашего проекта, но я разработал задачи msbuild и подписался на события TFS для моделирования процесса CI с TFS 2k5. Я вообще не рассматривал его для TFS 2k8, но он определенно поддерживается.

0
ответ дан 4 December 2019 в 13:47
поделиться

Мы используем инструмент с открытым исходным кодом Hudson. Это действительно хороший инструмент для автоматической сборки. Однако он предназначен не только для сборки. Вы можете использовать его для запуска тестов, предоставления отчетов о покрытии кода, рассылки уведомлений по электронной почте и т.д.

(Наша платформа разработки - это в основном linux+java)

8
ответ дан 4 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: