Каковы прохладные и интересные вещи, которые Вы делаете во время автоматизации сборки? [закрытый]

Немного другой подход:

bool A() {...}
bool B() {...}
bool C() {...}

int main(void)
{
  /**
   * Declare an array of pointers to functions returning bool
   * and initialize with A, B, and C
   */
  bool (*farr[])() = {A, B, C};
  ...
  /**
   * Call A, B, or C based on the value of i
   * (assumes i is in range of array)
   */
  if (farr[i]()) // or (*farr[i])()
  {
    ...
  }
  ...
}
32
задан Mehmet Aras 29 May 2009 в 12:04
поделиться

31 ответ

Запуск исполняемых файлов на http://virustotal.com для проверки на вирусы всех основных антивирусных механизмов.

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

43
ответ дан 27 November 2019 в 19:38
поделиться

Запуск модульных тестов и инструментов анализа кода, таких как NDepend, Gandarme. Результаты опубликованы CC.Net

1
ответ дан 27 November 2019 в 19:38
поделиться

Сбросить тестовую базу данных на этапе пост-сборки:

  • подготовить набор файлов (с помощью задачи TemplateFile )

Используйте эти файлы, чтобы

  • удалить test db
  • сделать резервную копию центральной базы данных
  • восстановить ее в новый экземпляр тестовой базы данных
  • запустить сценарии инициализации sql в тестовой базе данных (используя задачу Sql.Execute )
  • преобразовать (с использованием задачи Xml.XslTransform ) файлы данных xml в файлы sql (вставки)
  • запускаем их на тестовой базе данных

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

Было бы лучше, если бы схема и фиксированные данные также были бы в сопоставимых данных и файлах sql, но это WIP. Центральной базы данных еще нет, но она должна быть в системе управления версиями.

1
ответ дан 27 November 2019 в 19:38
поделиться

Для Java вы также можете использовать Ivy для автоматического получения любых недостающих библиотек. Например, если вы используете Hibernate, вы можете захотеть или не захотеть включать эти библиотеки в свой выпуск.

1
ответ дан 27 November 2019 в 19:38
поделиться

У нас есть аккаунт в Твиттере, поэтому мы можем проверить его статус в любое время из любого места

21
ответ дан 27 November 2019 в 19:38
поделиться

У нас был сценарий сборки, который автоматически пометил сборку и SVN и развернул приложение на сервере приложений WebSphere.

1
ответ дан 27 November 2019 в 19:38
поделиться

У нас есть простая кнопка Staples, которую мы подключили, чтобы запускать сборку при нажатии.

20
ответ дан 27 November 2019 в 19:38
поделиться

Создайте отчет для любых TODO / FIXME и т. Д., Которые могут быть разбросаны по коду.

16
ответ дан 27 November 2019 в 19:38
поделиться

Развертывание веб-сайтов непосредственно на тестовых серверах развертывания.

6
ответ дан 27 November 2019 в 19:38
поделиться

Автоматическое продвижение рабочего процесса.

Мы написали специальный плагин для нашего сервера Bamboo CI, который собирает все проблемы JIRA, связанные со сборкой (определяемые из комментариев svn commit), и проверяет их статус в JIRA.

После успешной сборки (и развертывания приложения на работающем сервере) любая проблема на этапе рабочего процесса «, ожидает сборки » автоматически переносится на « build и доступен для этапа тестирования ", который инициирует отправку электронного письма тестеру, назначенному для решения проблемы.

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

7
ответ дан 27 November 2019 в 19:38
поделиться

Вот некоторые вещи, которые я сделал, делаю или планирую сделать:

  • Обновить светофор (используя гаджет X10), чтобы указать статус сборки (зеленый = хорошо, желтый = здание, красный = упс!).
  • Создайте документацию по коду, затем обновите вики-проект документацией.
  • Другие обновления вики-страницы проекта, такие как публикация номер текущей версии, указав ссылку для загрузки и т. д.
  • Разверните (и при необходимости откатите) тестовый сервер, на котором выполняется ручное тестирование. Обычно я делал это с помощью VMWare, поэтому «развертывание» на самом деле является созданием нового экземпляра виртуальной машины.
  • Автоматически перемещать заявки, которые «ожидают сборки», в QA для тестирования.
  • Создавать отчеты о дефектах для неудачных тестов , неудачные сборки и предупреждения компилятора.
  • Отметьте сборку в системе контроля версий (также примените информацию о версии).
  • Запланируйте проверку после X или нескольких неудачных сборок в течение Y дней. (например, если три неудачи случаются за одну неделю, нам нужно встретиться, чтобы выяснить, что происходит)
  • Запланируйте вечеринку «пицца и пиво» ​​на безошибочные недели.
  • Сыграйте громкое «ца-цзин»! звук через систему громкой связи всякий раз, когда функция, которая, как мы знаем, приведет к новой продаже, завершена. В моей старой компании наша группа продаж полюбила эту бесполезную функцию :).
15
ответ дан 27 November 2019 в 19:38
поделиться

Заменяет номер версии на заставке SVG, а затем отображает его в Inkscape .

3
ответ дан 27 November 2019 в 19:38
поделиться

В различных проектах, в которых я участвовал, были большие публичные показы того, кто последний раз отмечался, а кто нарушил сборку. Мы сделали это с помощью Build-o-matic , и я написал Team Piazza , чтобы отображать ту же информацию для сборок Team City .

2
ответ дан 27 November 2019 в 19:38
поделиться

У нас есть веб-приложение, мы провели тестирование производительности и добавим проверку HTML / CSS в тестовые сценарии.

2
ответ дан 27 November 2019 в 19:38
поделиться

Управляемый код:

  1. Обновите все файлы AssemblyInfo до согласованной версии
  2. Запустите StyleCop и FxCop и убедитесь, что код красив и хорошо работает!

Собственный код:

  1. Запустите файл depends.exe в двоичных файлах и убедитесь, что никакие зависимости от среды выполнения отладки не вкрались - такое случается слишком часто
  2. Используйте manifest.exe для создания дампа файлов манифеста и проверки зависимостей отладки - эти вещи распространяются повсюду!
  3. Создание привязок python для кода C ++ с помощью SWIG
2
ответ дан 27 November 2019 в 19:38
поделиться

Мы применяем цифровую подпись ко всем создаваемым двоичным файлам. Сценарий сборки делает это автоматически.

4
ответ дан 27 November 2019 в 19:38
поделиться

For Java development we use:

  • JUnit complemented by Cobertura (Cobertura identifies which parts of the code are lacking test coverage)
  • Find Bugs - tool that scours the code looking for bugs and vulnerabilities
  • Hudson tool (see hudson.dev.java.net [I can't post hyperlinks yet!]) which manages the building and testing of software. It has a feature like AoP's (above) traffic light - Blue-successful build and all unit tests passed, Yellow-successful build and some unit tests failed, Red-build failed.

Hudson also

  • Manages software building via plug-ins to SVN, Continuus, etc
  • Maintains a history of all builds - allowing our Junit tests and Find Bugs results to be displayed in trend graphs
  • Sends emails to all interested parties whenever the build results in a changed state (e.g. Blue to Yellow, Red to Blue)
  • All information is presented in a simple internal web page
2
ответ дан 27 November 2019 в 19:38
поделиться

A few things.

  1. Upload pdb's to Symbol/Source Server <- invaluable for debugging winqual crash dumps
  2. Run Tests on Installers deployed into VM's through CC.NET
  3. Create a base VM for testing through CC.NET and deploy it to all QA
  4. Take a copy of that VM image and using EggPlant perform Automated UI testing
4
ответ дан 27 November 2019 в 19:38
поделиться

Как насчет встраивания отметки времени сборки в каждый построенный образ?

<ItemGroup>
  <StampFile   Include="BuildTimestamp.cs"/>
</ItemGroup>

<Target Name="BuildTimestamp" 
        Outputs="@(StampFile)">
  <Message Text="Building Timestamp..." />
  <Touch
     AlwaysCreate = "true"
        Files="@(StampFile)" />

    <WriteLinesToFile
        File="@(StampFile)"
        Lines='public static class Build { public static string Timestamp = "%(StampFile.CreatedTime)" %3B }'
        Overwrite="true"/>
</Target>

Вы можете расширить это, включив в него имя машины, фазу луны и т. Д.

1
ответ дан 27 November 2019 в 19:38
поделиться

Мы строим проекты BizTalk 2006 :)

2
ответ дан 27 November 2019 в 19:38
поделиться

Мы используем 'checkstyle' ( http://checkstyle.sourceforge.net/anttask.html ), чтобы создать отчет для кода, который может быть вновь зарегистрирован и не проверяется (формально) перед сборкой разработчика. Кроме того, я написал несколько пользовательских задач, которые выполняют следующие действия:

  1. Проверяет свойства подключения к БД и пытается установить фактическое соединение с БД (простой код JDBC) и сообщать, есть ли какие-либо проблемы с учетными данными пользователя и т. Д.
  2. Добавьте имя пользователя и метку времени последней сборки в код
  3. Отправьте уведомление нашему корпоративному клиенту обмена мгновенными сообщениями (настраиваемый список) со статусом сборки

Есть еще несколько задач, которые есть, но они специфические во внутреннюю среду связанные настройки.

1
ответ дан 27 November 2019 в 19:38
поделиться

Несколько вещей, которые мы сделали:

  1. Поставить цифровую подпись для всех exes
  2. Архив pdbs
  3. Создание установщиков с использованием WIX
  4. Создание полных файлов .iso для распространяемого программного обеспечения на CD или DVD
1
ответ дан 27 November 2019 в 19:38
поделиться

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

2
ответ дан 27 November 2019 в 19:38
поделиться

У нас есть Nabaztag / tag , показывающий, возникают ли какие-либо ошибки на сервере сборки.

1
ответ дан 27 November 2019 в 19:38
поделиться

Вот некоторые вещи, которые я обычно использую в Continuous Integration :

  • вычисление показателей кода и статистики производительности (фиксируется нашей структурой, пока выполняются тесты;
  • ] выполнение тестов качества кода, обеспечивающих соблюдение определенных руководящих принципов разработки (например, именование классов, неизменяемость, разрешенные ссылки);
  • обновление онлайн-документации, созданной из кода;
  • установка пакетов установки (WiX и ClickOnce) в развертывание сервер и манифест обновления, необходимые для автообновлений;
  • обновление страницы «Загрузка» для проектов с открытым исходным кодом;
  • уведомление всех вовлеченных сторон о сборке и результатах.
1
ответ дан 27 November 2019 в 19:38
поделиться

Я действительно удивлен, что никто не упомянул об обновлении файлов конфигурации! Мы обновляем наши файлы конфигурации b в зависимости от среды, которую мы создаем для использования сценария сборки. Это экономит как минимум 20 минут, которые потребуются для замены всех connectionStrings и appSettings. Мы также делаем следующее:

Обновление номера версии
Перейти на тестовые серверы
Выполнить анализ кода
Отправить статус сборки по электронной почте
Запустите несколько скриптов базы данных

1
ответ дан 27 November 2019 в 19:38
поделиться

Извлечь случайное изображение с сайта failblog.com, чтобы прикрепить его к электронному письму о сбое сборки.

12
ответ дан 27 November 2019 в 19:38
поделиться

Я не читал здесь более половины ответов, но надеюсь, что некоторые из них «новые»:

  • Установка и обновление старой версии для проверки отличий файлов от новых установка (тестирует нашу конфигурацию обновления развертывания)
  • Разверните наше основное приложение и внешние системные адаптеры на пользовательском Jboss (включенном в проект / выпуск), запустите его и запустите тестовые наборы SoapUI для проверки сквозной функциональности (также дополнительный тест для нашей автоматизации развертывания)
  • Примените дельта-скрипты к предыдущей версии базы данных, а затем проведите структурное сравнение с новой установкой, чтобы новые таблицы, столбцы и т. д. создавались во время обновлений
  • Опубликуйте нашу документацию по выпуску в Confluence ( мы в основном запускаем наш полный сценарий выпуска каждую ночь),в качестве превью следующего выпуска из trunk
1
ответ дан 27 November 2019 в 19:38
поделиться

Мы много делаем: с MSBUILD

  • Получение источников
  • Обновляем информацию о сборке с отметкой времени и последним набором изменений в информации о файле и информации о версии
  • Компиляция:)
  • Запуск Тесты с Galio
  • Создайте отчет о тестировании с текущей отметкой времени и опубликуйте его в IIS
  • Создайте Zip-пакеты всех необходимых двоичных файлов
  • Публикуйте Zip-пакеты в SVN
  • Отмените привязку файла SLN к TFS
  • Удалить все bin / obj files
  • Публикация исходного кода в SVN
  • Отправка электронного письма после успешной или неудачной сборки
  • Развертывание приложения с использованием сценариев NANT
1
ответ дан 27 November 2019 в 19:38
поделиться

Помимо управления версиями, подписи, тестирования и т. Д., Уже упомянутых здесь несколько раз, мы также:

  • запускаем spdisposeCheck для sharepoint-dll
  • запускает sigcheck (из sysinternals), чтобы создать хороший обзор версий и применяемых сертификатов
1
ответ дан 27 November 2019 в 19:38
поделиться
Другие вопросы по тегам:

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