Автоматизация сборки (разработка ПО)

Автоматизация сборки (разработка ПО)

Автоматизация сборки (разработка ПО)

Автоматизация сборки — этап написания скриптов или автоматизация широкого спектра задач применительно к ПО, применяемому разработчиками в их повседневной деятельности, включая такие действия, как:

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

Содержание

История

Исторически так сложилось, что разработчики применяли автоматизацию сборки для вызова компиляторов и линковщиков из скрипта сборки, в отличие от вызова компилятора из командной строки. Довольно просто при помощи командной строки передать один исходный модуль компилятору, а затем и линковщику для создания конечного объекта. Однако, при попытке скомпилировать или слинковать множество модулей с исходным кодом, причем в определенном порядке, осуществление этого процесса вручную при помощи командной строки выглядит слишком неудобным. Гораздо более привлекательной альтернативой является скриптовый язык, поддерживаемый утилитой Make. Данный инструмент позволяет писать скрипты сборки, определяя порядок их вызова, этапы компиляции и линковки для сборки программы. GNU Make [1] также предоставляет такие дополнительные возможности, как например, «зависимости» («makedepend»), которые позволяют указать условия подключения исходного кода на каждом этапе сборки. Это и стало началом автоматизации сборки. Основной целью была автоматизация вызовов компиляторов и линковщиков. По мере роста и усложнения процесса сборки разработчики начали добавлять действия до и после вызовов компиляторов, как например, проверку (check-out) версий копируемых объектов на тестовую систему. Термин «автоматизация сборки» уже включает в себя управление и действиями до и посли компиляции и линковки, так же как и действия при компиляции и линковке.

Новое поколение инструментов

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


Продвинутая автоматизация сборки

Продвинутая автоматизация сборки предоставляет возможность удаленному пользователю управлять обработкой распределенных сборок и/или распределенной обработкой сборки. Термин «распределенные сборки» подразумевает, что вызовы компилятора и линковщика могут передаваться множеству компьютеров для ускорения скорости сборки. Данный термин часто путают с «распределенной обработкой». Распределенная обработка означает, что каждый этап процесса может быть адресован разным машинам для выполнения ими данного шага. Например, этап после сборки может потребовать выполнения множества тестовых скриптов на множестве машин. Распределенная обработка позволяет послать команду на исполнение различных тестовых скриптов на разных машинах. Распределенная обработка — не то же самое, что и распределенная сборка! Распределенная обработка не может взять скрипты от make или maven, разбить их и послать команды на компиляцию и линковку различным машинам. Распределенный процесс сборки должен обладать определенной логикой, чтобы правильно определить зависимости в исходном коде для того чтобы выполнить этапы компиляции и линковки на разных машинах. Решение автоматизации сборки должно быть способно управлять этими зависимостями, чтобы выполнять распределенные сборки. Некоторые инструменты сборки могут распознавать подобные взаимосвязи автоматически (Rational ClearMake distributed[2], Electric Cloud ElectricAccelerator[3]), а другие зависят от пользовательских указаний (Platform LSF lsmake[4]) Автоматизация сборки, способная рассортировывать взаимосвязи зависимостей исходного кода, также может быть настроена на выполнение действий компиляции и линковки в режиме параллельного выполнения. Это означает, что компиляторы и линковщики могут быть вызваны в многопоточном режиме на машине, сконфигурированной с учетом наличия более одного процессорного ядра.

Не все инструменты автоматизации сборки могут выполнять распределенные сборки. Большинство из них лишь реализует поддержку распределенной обработки. Кроме того, большинство решений, поддерживающих распределенные сборки, могут лишь обрабатывать код на языках Си и C++. Решения автоматизации сборки, поддерживающие распределенную обработку, зачастую основаны на Make и не поддерживают Maven или Ant.

В качестве примера решения распределенной сборки можно привести Xoreax’s IncrediBuild[5] для платформы Microsoft Visual Studio. Это может потребовать специфической настройки программного окружения чтобы успешно функционировать на распределенной платформе (нужно указать расположение библиотек, переменные окружения и т. д.).

Преимущества

  • Улучшение качества продукта
  • Ускорение процесса компиляции и линковки
  • Избавление от излишних действий
  • Минимизация «плохих (некорректных) сборок»
  • Избавление от привязки к конкретному человеку
  • Ведение истории сборок и релизов для разбора выпусков
  • Экономия времени и денег благодаря причинам, указанным выше.[6]

Типы

Makefile

Одна из особых форм автоматизации сборки — автоматическое создание make-файлов (makefiles). Эти файлы совместимы с такими инструментами как:

Требования к системам сборки

Базовые требования:

  1. Частые или ночные сборки для своевременного выявления проблем.[7][8][9]
  2. Поддержка управления зависимостями исходного кода (Source Code Dependency Management)
  3. Обработка разностной сборки
  4. Уведомление при совпадении исходного кода (после сборки) с имеющимися бинарными файлами.
  5. Ускорение сборки
  6. Отчет о результатах компиляции и линковки.

Дополнительные требования:[10]

  1. Создание описания изменений (release notes) и другой сопутствующей документации (например, руководства).
  2. Отчет о статусе сборки
  3. Отчет об успешном/неуспешном прохождении тестов.
  4. Суммирование добавленных/измененных/удаленных особенностей в каждой новой сборке

Программные инструменты

Основная статья: Список программ для автоматической сборки

Смотри также

Ссылки

  • Майк Кларк: Pragmatic Project Automation, The Pragmatic Programmers ISBN 0-9745140-3-9

Дополнительные источники


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Автоматизация сборки (разработка ПО)" в других словарях:

  • Автоматизация сборки — Для улучшения этой статьи желательно?: Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное. Переработать оформление в соответствии с правилами написания статей …   Википедия

  • Apache Maven — Тип Автоматизация сборки Разработчик …   Википедия

  • РМ 4-239-91: Системы автоматизации. Словарь-справочник по терминам. Пособие к СНиП 3.05.07-85 — Терминология РМ 4 239 91: Системы автоматизации. Словарь справочник по терминам. Пособие к СНиП 3.05.07 85: 4.2. АВТОМАТИЗАЦИЯ 1. Внедрение автоматических средств для реализации процессов СТИСО 2382/1 Определения термина из разных документов:… …   Словарь-справочник терминов нормативно-технической документации

  • Тульское ОАО ОКБ «Октава» — Эта статья или раздел носит ярко выраженный рекламный характер. Это не соответствует правилам Википедии. Вы можете помочь проекту …   Википедия

  • Apache Ant — (Another Neat Tool) Тип Билд утилиты Разработчик …   Википедия

  • Технологический процесс — (Process) Определение технологического процесса, типы технологического процесса Определение технологического процесса, типы технологического процесса, правила процесса Содержание Содержание Определение . Понятие технологического процесса Основные …   Энциклопедия инвестора

  • KUKA Systems — GmbH Тип Общество с ограниченной ответственностью Год основания 1898/2007 …   Википедия

  • ИТ Сервис Менеджмент — ITSM (IT Service Management, управление IT услугами)  подмножество библиотеки ITIL получила наибольшую известность в силу того, что предоставление и поддержка IT услуг является первичной задачей IT подразделений и специализированных IT компаний,… …   Википедия

  • Siemens AG — Год основания 1847 (Берлин, Пруссия) Основатели Вернер фон Сименс Ключевые фигуры Петер Лёшер (главн …   Википедия

  • СССР. Промышленность —         Развитие промышленности в 1917 45. При наличии в царской России отдельных хорошо оснащенных и организованных производств технический уровень промышленности в целом оставался низким, структура её была отсталой (удельный вес… …   Большая советская энциклопедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»