Автоматизация сборки

Поделись знанием:
Перейти к: навигация, поиск

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

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




История

Исторически так сложилось, что разработчики применяли автоматизацию сборки для вызова компиляторов и линковщиков из скрипта сборки, в отличие от вызова компилятора из командной строки. Довольно просто при помощи командной строки передать один исходный модуль компилятору, а затем и линковщику для создания конечного объекта. Однако, при попытке скомпилировать или слинковать множество модулей с исходным кодом, причём в определенном порядке, осуществление этого процесса вручную при помощи командной строки выглядит слишком неудобным. Гораздо более привлекательной альтернативой является скриптовый язык, поддерживаемый утилитой 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. Суммирование добавленных/измененных/удаленных особенностей в каждой новой сборке

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

См. также

Напишите отзыв о статье "Автоматизация сборки"

Ссылки

  1. [www.gnu.org/software/make/ GNU Make — GNU Project — Free Software Foundation (FSF)]
  2. [www.ddj.com/architect/184405385 Dr. Dobb's Distributed Loadbuilds], <www.ddj.com/architect/184405385>. Проверено 13 апреля 2009. 
  3. [www.ddj.com/architect/184415472 Dr. Dobb's Take My Build, Please], <www.ddj.com/architect/184415472> 
  4. [www.lle.rochester.edu/pub/support/lsf/10-lsmake.html LSF User's Guide - Using lsmake], <www.lle.rochester.edu/pub/support/lsf/10-lsmake.html>. Проверено 13 апреля 2009. 
  5. [www.xoreax.com/solutions_vs.htm Distributed Visual Studio Builds], <www.xoreax.com/solutions_vs.htm>. Проверено 8 апреля 2009. 
  6. [www.denverjug.org/meetings/files/200410_automation.pdf www.denverjug.org]
  7. [freshmeat.net/articles/view/392/ Build and Release Management | freshmeat.net]
  8. [www.ibm.com/developerworks/java/library/j-junitmail/ IBM developerWorks: Site maintenance]
  9. [buildbot.net/trac Buildbot]
  10. [www.cmcrossroads.com/content/view/12525/120/ Custom 404 Page]

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

  • [www.viewtier.com/support/articles/build_server_capacity_planning.htm Capacity Planning]

Отрывок, характеризующий Автоматизация сборки

Старый князь был еще в городе, и его ждали каждую минуту.
Князь Андрей провел Пьера на свою половину, всегда в полной исправности ожидавшую его в доме его отца, и сам пошел в детскую.
– Пойдем к сестре, – сказал князь Андрей, возвратившись к Пьеру; – я еще не видал ее, она теперь прячется и сидит с своими божьими людьми. Поделом ей, она сконфузится, а ты увидишь божьих людей. C'est curieux, ma parole. [Это любопытно, честное слово.]
– Qu'est ce que c'est que [Что такое] божьи люди? – спросил Пьер
– А вот увидишь.
Княжна Марья действительно сконфузилась и покраснела пятнами, когда вошли к ней. В ее уютной комнате с лампадами перед киотами, на диване, за самоваром сидел рядом с ней молодой мальчик с длинным носом и длинными волосами, и в монашеской рясе.
На кресле, подле, сидела сморщенная, худая старушка с кротким выражением детского лица.
– Andre, pourquoi ne pas m'avoir prevenu? [Андрей, почему не предупредили меня?] – сказала она с кротким упреком, становясь перед своими странниками, как наседка перед цыплятами.
– Charmee de vous voir. Je suis tres contente de vous voir, [Очень рада вас видеть. Я так довольна, что вижу вас,] – сказала она Пьеру, в то время, как он целовал ее руку. Она знала его ребенком, и теперь дружба его с Андреем, его несчастие с женой, а главное, его доброе, простое лицо расположили ее к нему. Она смотрела на него своими прекрасными, лучистыми глазами и, казалось, говорила: «я вас очень люблю, но пожалуйста не смейтесь над моими ». Обменявшись первыми фразами приветствия, они сели.
– А, и Иванушка тут, – сказал князь Андрей, указывая улыбкой на молодого странника.
– Andre! – умоляюще сказала княжна Марья.
– Il faut que vous sachiez que c'est une femme, [Знай, что это женщина,] – сказал Андрей Пьеру.
– Andre, au nom de Dieu! [Андрей, ради Бога!] – повторила княжна Марья.
Видно было, что насмешливое отношение князя Андрея к странникам и бесполезное заступничество за них княжны Марьи были привычные, установившиеся между ними отношения.
– Mais, ma bonne amie, – сказал князь Андрей, – vous devriez au contraire m'etre reconaissante de ce que j'explique a Pierre votre intimite avec ce jeune homme… [Но, мой друг, ты должна бы быть мне благодарна, что я объясняю Пьеру твою близость к этому молодому человеку.]
– Vraiment? [Правда?] – сказал Пьер любопытно и серьезно (за что особенно ему благодарна была княжна Марья) вглядываясь через очки в лицо Иванушки, который, поняв, что речь шла о нем, хитрыми глазами оглядывал всех.
Княжна Марья совершенно напрасно смутилась за своих. Они нисколько не робели. Старушка, опустив глаза, но искоса поглядывая на вошедших, опрокинув чашку вверх дном на блюдечко и положив подле обкусанный кусочек сахара, спокойно и неподвижно сидела на своем кресле, ожидая, чтобы ей предложили еще чаю. Иванушка, попивая из блюдечка, исподлобья лукавыми, женскими глазами смотрел на молодых людей.
– Где, в Киеве была? – спросил старуху князь Андрей.
– Была, отец, – отвечала словоохотливо старуха, – на самое Рожество удостоилась у угодников сообщиться святых, небесных тайн. А теперь из Колязина, отец, благодать великая открылась…
– Что ж, Иванушка с тобой?
– Я сам по себе иду, кормилец, – стараясь говорить басом, сказал Иванушка. – Только в Юхнове с Пелагеюшкой сошлись…
Пелагеюшка перебила своего товарища; ей видно хотелось рассказать то, что она видела.
– В Колязине, отец, великая благодать открылась.
– Что ж, мощи новые? – спросил князь Андрей.
– Полно, Андрей, – сказала княжна Марья. – Не рассказывай, Пелагеюшка.
– Ни… что ты, мать, отчего не рассказывать? Я его люблю. Он добрый, Богом взысканный, он мне, благодетель, рублей дал, я помню. Как была я в Киеве и говорит мне Кирюша юродивый – истинно Божий человек, зиму и лето босой ходит. Что ходишь, говорит, не по своему месту, в Колязин иди, там икона чудотворная, матушка пресвятая Богородица открылась. Я с тех слов простилась с угодниками и пошла…
Все молчали, одна странница говорила мерным голосом, втягивая в себя воздух.
– Пришла, отец мой, мне народ и говорит: благодать великая открылась, у матушки пресвятой Богородицы миро из щечки каплет…
– Ну хорошо, хорошо, после расскажешь, – краснея сказала княжна Марья.
– Позвольте у нее спросить, – сказал Пьер. – Ты сама видела? – спросил он.
– Как же, отец, сама удостоилась. Сияние такое на лике то, как свет небесный, а из щечки у матушки так и каплет, так и каплет…
– Да ведь это обман, – наивно сказал Пьер, внимательно слушавший странницу.
– Ах, отец, что говоришь! – с ужасом сказала Пелагеюшка, за защитой обращаясь к княжне Марье.
– Это обманывают народ, – повторил он.
– Господи Иисусе Христе! – крестясь сказала странница. – Ох, не говори, отец. Так то один анарал не верил, сказал: «монахи обманывают», да как сказал, так и ослеп. И приснилось ему, что приходит к нему матушка Печерская и говорит: «уверуй мне, я тебя исцелю». Вот и стал проситься: повези да повези меня к ней. Это я тебе истинную правду говорю, сама видела. Привезли его слепого прямо к ней, подошел, упал, говорит: «исцели! отдам тебе, говорит, в чем царь жаловал». Сама видела, отец, звезда в ней так и вделана. Что ж, – прозрел! Грех говорить так. Бог накажет, – поучительно обратилась она к Пьеру.
– Как же звезда то в образе очутилась? – спросил Пьер.
– В генералы и матушку произвели? – сказал князь Aндрей улыбаясь.
Пелагеюшка вдруг побледнела и всплеснула руками.
– Отец, отец, грех тебе, у тебя сын! – заговорила она, из бледности вдруг переходя в яркую краску.
– Отец, что ты сказал такое, Бог тебя прости. – Она перекрестилась. – Господи, прости его. Матушка, что ж это?… – обратилась она к княжне Марье. Она встала и чуть не плача стала собирать свою сумочку. Ей, видно, было и страшно, и стыдно, что она пользовалась благодеяниями в доме, где могли говорить это, и жалко, что надо было теперь лишиться благодеяний этого дома.
– Ну что вам за охота? – сказала княжна Марья. – Зачем вы пришли ко мне?…
– Нет, ведь я шучу, Пелагеюшка, – сказал Пьер. – Princesse, ma parole, je n'ai pas voulu l'offenser, [Княжна, я право, не хотел обидеть ее,] я так только. Ты не думай, я пошутил, – говорил он, робко улыбаясь и желая загладить свою вину. – Ведь это я, а он так, пошутил только.
Пелагеюшка остановилась недоверчиво, но в лице Пьера была такая искренность раскаяния, и князь Андрей так кротко смотрел то на Пелагеюшку, то на Пьера, что она понемногу успокоилась.


Странница успокоилась и, наведенная опять на разговор, долго потом рассказывала про отца Амфилохия, который был такой святой жизни, что от ручки его ладоном пахло, и о том, как знакомые ей монахи в последнее ее странствие в Киев дали ей ключи от пещер, и как она, взяв с собой сухарики, двое суток провела в пещерах с угодниками. «Помолюсь одному, почитаю, пойду к другому. Сосну, опять пойду приложусь; и такая, матушка, тишина, благодать такая, что и на свет Божий выходить не хочется».
Пьер внимательно и серьезно слушал ее. Князь Андрей вышел из комнаты. И вслед за ним, оставив божьих людей допивать чай, княжна Марья повела Пьера в гостиную.
– Вы очень добры, – сказала она ему.
– Ах, я право не думал оскорбить ее, я так понимаю и высоко ценю эти чувства!
Княжна Марья молча посмотрела на него и нежно улыбнулась. – Ведь я вас давно знаю и люблю как брата, – сказала она. – Как вы нашли Андрея? – спросила она поспешно, не давая ему времени сказать что нибудь в ответ на ее ласковые слова. – Он очень беспокоит меня. Здоровье его зимой лучше, но прошлой весной рана открылась, и доктор сказал, что он должен ехать лечиться. И нравственно я очень боюсь за него. Он не такой характер как мы, женщины, чтобы выстрадать и выплакать свое горе. Он внутри себя носит его. Нынче он весел и оживлен; но это ваш приезд так подействовал на него: он редко бывает таким. Ежели бы вы могли уговорить его поехать за границу! Ему нужна деятельность, а эта ровная, тихая жизнь губит его. Другие не замечают, а я вижу.