Автоматизація складання або автоматизація побудови (англ. build automation) — етап написання скриптів або автоматизація широкого спектра завдань, вживаного розробниками в їхній повсякденній діяльності. Включає в себе такі дії, як:
- компіляція сирцевого коду в бінарний код
- складання бінарного коду
- виконання тестів
- розгортання програми на виробничій платформі
- написання супровідної документації або опис змін нової версії.
Історія
Історично так склалося, що розробники застосовували автоматизацію складання для виклику компіляторів і компонувальників зі скрипту складання, на відміну від виклику компілятора з командного рядка. Досить просто за допомогою командного рядка передати один сирцевий модуль компілятору, а потім і компонувальнику для створення кінцевого об'єкта. Однак, при спробі скомпілювати або скомпонувати велику кількість модулів з сирцевим кодом, причому в певному порядку, здійснення цього процесу вручну за допомогою командного рядка виглядає занадто незручним. Набагато привабливішою альтернативою є скриптова мова, підтримувана утилітою Make. Цей інструмент дозволяє писати скрипти складання, визначаючи порядок їхнього виклику, етапи компіляції і компонування для складання програми. GNU Make також надає такі додаткові можливості, як наприклад, «залежності» («makedepend»), які дозволяють вказати умови підключення сирцевого коду на кожному етапі складання. Це і стало початком автоматизації складання. Основною метою була автоматизація викликів компіляторів і компонувальника. У міру зростання і ускладнення процесу складання розробники почали додавати дії до і після викликів компіляторів, як наприклад, перевірку (check-out) версій копійованих об'єктів на тестову систему. Термін «автоматизація складання» вже включає в себе управління і дії до і після компіляції і компонування, так само як і дії при компіляції і компонуванні.
Нове покоління інструментів
В останні роки[] рішення з управління складанням зробили ще більш зручним і керованим процес автоматизованого складання. Для виконання автоматизованого складання і контролю цього процесу існують як комерційні, так і відкриті рішення. Деякі рішення націлені на автоматизацію кроків до і після виклику складальних скриптів, а інші виходять за рамки дій до і після обробки скриптів і повністю автоматизують процес компіляції і компонування, позбавляючи від ручного написання скриптів. Такі інструменти надзвичайно корисні для неперервної інтеграції, коли потрібні часті виклики компіляції та обробка проміжних складань.
Просунута автоматизація складання
Просунута автоматизація складання надає можливість віддаленому користувачеві управляти обробкою розподілених складань і/або розподіленою обробкою складання. Термін «розподілені складання» значить, що виклики компілятора і компонувальника можуть передаватися множині комп'ютерів для прискорення швидкості складання. Цей термін часто плутають з «розподіленою обробкою». Розподілена обробка означає, що кожен етап процесу може бути адресований різним машинам для виконання ними даного кроку. Наприклад, етап після складання може зажадати виконання безлічі тестових скриптів на множині машин. Розподілена обробка дозволяє послати команду на виконання різних тестових скриптів на різних машинах. Розподілена обробка — не те ж саме, що і розподілене складання! Розподілена обробка не може взяти скрипти від make або maven, розбити їх і послати команди на компіляцію і компонування різним машинам. Розподілений процес складання повинен володіти певною логікою, щоб правильно визначити залежності у сирцевому коді для того щоб виконати етапи компіляції і компонування на різних машинах. Рішення автоматизації складання має бути здатне управляти цими залежностями, щоб виконувати розподілені складання. Деякі інструменти складання можуть розпізнавати подібні взаємозв'язку автоматично (Rational ClearMake distributed, Electric Cloud ElectricAccelerator), а інші залежать від вказівок користувача (Platform LSF lsmake) Автоматизація складання, здатна розсортовувати взаємозв'язки залежностей сирцевого коду, також може бути налаштована на виконання дій компіляції і компонування в режимі паралельного виконання. Це означає, що компілятори і компонувальник можуть бути викликані в багатонитевому режимі на машині, сконфігурованій з урахуванням наявності більше одного процесорного ядра.
Не всі інструменти автоматизації складання можуть виконувати розподілені складання. Більшість з них лише реалізує підтримку розподіленої обробки. Крім того, більшість рішень, що підтримують розподілені складання, можуть лише обробляти код на мовах C та . Рішення автоматизації складання, що підтримують розподілену обробку, часто засновані на Make і не підтримують Maven або Ant.
Як приклад рішення розподіленого складання можна навести Xoreax's IncrediBuild для платформи Microsoft Visual Studio. Це може вимагати специфічного налаштування програмного оточення, щоб успішно функціонувати на розподіленій платформі (потрібно вказати розташування бібліотек, змінні оточення тощо).
Переваги
- Поліпшення якості продукту
- Прискорення процесу компіляції і компонування
- Позбавлення від зайвих дій
- Мінімізація «поганих (некоректних) складань»
- Позбавлення від прив'язки до конкретної людини
- Ведення історії складання і релізів для розбору випусків
- Економія часу і грошей завдяки причинам, вказаним вище.
Типи
- Автоматизація за запитом (On-Demand automation): запуск користувачем скрипту в командному рядку
- Запланована автоматизація (Scheduled automation): безперервна інтеграція, яка відбувається у вигляді нічних складань
- Умовна автоматизація (Triggered automation): безперервна інтеграція, що виконує складання при кожному підтвердженні зміни коду (commit) у системі керування версіями
Makefile
Одна з особливих форм автоматизації складання — автоматичне створення make-файлів (makefiles). Ці файли сумісні з такими інструментами як:
Вимоги до систем складання
Базові вимоги:
- Часті або нічні складання для своєчасного виявлення проблем
- Підтримка керування залежностями сирцевого коду (Source Code Dependency Management)
- Обробка різницевого складання
- Повідомлення при збігові сирцевого коду (після складання) з наявними бінарними файлами
- Прискорення складання
- Звіт про результати компіляції і компонування.
Додаткові вимоги:
- Створення опису змін (release notes) та іншої супутньої документації (наприклад, довідників)
- Звіт про статус складання
- Звіт про успішне/неуспішне проходження тестів
- Підсумовування доданих/змінених/вилучених особливостей у кожному новому складанні.
Програмні інструменти
Виноски
- (англ.). Free Software Foundation. Архів оригіналу за 23 квітня 2015. Процитовано 22 квітня 2015.
- Dr. Dobb's Distributed Loadbuilds, процитовано 13 квітня 2009
- Dr. Dobb's Take My Build, Please
- , архів оригіналу за 7 жовтня 2007, процитовано 13 квітня 2009
- , архів оригіналу за 12 квітня 2009, процитовано 8 квітня 2009
- (PDF). Архів оригіналу (PDF) за 23 листопада 2008. Процитовано 22 квітня 2015.
- . Архів оригіналу за 30 вересня 2007. Процитовано 22 квітня 2015.
{{}}
: Текст «freshmeat.net» проігноровано () - . Архів оригіналу за 2 березня 2009. Процитовано 22 квітня 2015.
- . Архів оригіналу за 6 грудня 2010. Процитовано 22 квітня 2015.
- Mayank Gupta (15.09.2008). (англ.). Архів оригіналу за 29 квітня 2009. Процитовано 22 квітня 2015.
Посилання
- Майк Кларк: Pragmatic Project Automation, The Pragmatic Programmers
Дивись також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Avtomatizaciya skladannya abo avtomatizaciya pobudovi angl build automation etap napisannya skriptiv abo avtomatizaciya shirokogo spektra zavdan vzhivanogo rozrobnikami v yihnij povsyakdennij diyalnosti Vklyuchaye v sebe taki diyi yak kompilyaciya sircevogo kodu v binarnij kod skladannya binarnogo kodu vikonannya testiv rozgortannya programi na virobnichij platformi napisannya suprovidnoyi dokumentaciyi abo opis zmin novoyi versiyi IstoriyaIstorichno tak sklalosya sho rozrobniki zastosovuvali avtomatizaciyu skladannya dlya vikliku kompilyatoriv i komponuvalnikiv zi skriptu skladannya na vidminu vid vikliku kompilyatora z komandnogo ryadka Dosit prosto za dopomogoyu komandnogo ryadka peredati odin sircevij modul kompilyatoru a potim i komponuvalniku dlya stvorennya kincevogo ob yekta Odnak pri sprobi skompilyuvati abo skomponuvati veliku kilkist moduliv z sircevim kodom prichomu v pevnomu poryadku zdijsnennya cogo procesu vruchnu za dopomogoyu komandnogo ryadka viglyadaye zanadto nezruchnim Nabagato privablivishoyu alternativoyu ye skriptova mova pidtrimuvana utilitoyu Make Cej instrument dozvolyaye pisati skripti skladannya viznachayuchi poryadok yihnogo vikliku etapi kompilyaciyi i komponuvannya dlya skladannya programi GNU Make takozh nadaye taki dodatkovi mozhlivosti yak napriklad zalezhnosti makedepend yaki dozvolyayut vkazati umovi pidklyuchennya sircevogo kodu na kozhnomu etapi skladannya Ce i stalo pochatkom avtomatizaciyi skladannya Osnovnoyu metoyu bula avtomatizaciya viklikiv kompilyatoriv i komponuvalnika U miru zrostannya i uskladnennya procesu skladannya rozrobniki pochali dodavati diyi do i pislya viklikiv kompilyatoriv yak napriklad perevirku check out versij kopijovanih ob yektiv na testovu sistemu Termin avtomatizaciya skladannya vzhe vklyuchaye v sebe upravlinnya i diyi do i pislya kompilyaciyi i komponuvannya tak samo yak i diyi pri kompilyaciyi i komponuvanni Nove pokolinnya instrumentiv V ostanni roki koli rishennya z upravlinnya skladannyam zrobili she bilsh zruchnim i kerovanim proces avtomatizovanogo skladannya Dlya vikonannya avtomatizovanogo skladannya i kontrolyu cogo procesu isnuyut yak komercijni tak i vidkriti rishennya Deyaki rishennya nacileni na avtomatizaciyu krokiv do i pislya vikliku skladalnih skriptiv a inshi vihodyat za ramki dij do i pislya obrobki skriptiv i povnistyu avtomatizuyut proces kompilyaciyi i komponuvannya pozbavlyayuchi vid ruchnogo napisannya skriptiv Taki instrumenti nadzvichajno korisni dlya neperervnoyi integraciyi koli potribni chasti vikliki kompilyaciyi ta obrobka promizhnih skladan Prosunuta avtomatizaciya skladannya Prosunuta avtomatizaciya skladannya nadaye mozhlivist viddalenomu koristuvachevi upravlyati obrobkoyu rozpodilenih skladan i abo rozpodilenoyu obrobkoyu skladannya Termin rozpodileni skladannya znachit sho vikliki kompilyatora i komponuvalnika mozhut peredavatisya mnozhini komp yuteriv dlya priskorennya shvidkosti skladannya Cej termin chasto plutayut z rozpodilenoyu obrobkoyu Rozpodilena obrobka oznachaye sho kozhen etap procesu mozhe buti adresovanij riznim mashinam dlya vikonannya nimi danogo kroku Napriklad etap pislya skladannya mozhe zazhadati vikonannya bezlichi testovih skriptiv na mnozhini mashin Rozpodilena obrobka dozvolyaye poslati komandu na vikonannya riznih testovih skriptiv na riznih mashinah Rozpodilena obrobka ne te zh same sho i rozpodilene skladannya Rozpodilena obrobka ne mozhe vzyati skripti vid make abo maven rozbiti yih i poslati komandi na kompilyaciyu i komponuvannya riznim mashinam Rozpodilenij proces skladannya povinen voloditi pevnoyu logikoyu shob pravilno viznachiti zalezhnosti u sircevomu kodi dlya togo shob vikonati etapi kompilyaciyi i komponuvannya na riznih mashinah Rishennya avtomatizaciyi skladannya maye buti zdatne upravlyati cimi zalezhnostyami shob vikonuvati rozpodileni skladannya Deyaki instrumenti skladannya mozhut rozpiznavati podibni vzayemozv yazku avtomatichno Rational ClearMake distributed Electric Cloud ElectricAccelerator a inshi zalezhat vid vkazivok koristuvacha Platform LSF lsmake Avtomatizaciya skladannya zdatna rozsortovuvati vzayemozv yazki zalezhnostej sircevogo kodu takozh mozhe buti nalashtovana na vikonannya dij kompilyaciyi i komponuvannya v rezhimi paralelnogo vikonannya Ce oznachaye sho kompilyatori i komponuvalnik mozhut buti viklikani v bagatonitevomu rezhimi na mashini skonfigurovanij z urahuvannyam nayavnosti bilshe odnogo procesornogo yadra Ne vsi instrumenti avtomatizaciyi skladannya mozhut vikonuvati rozpodileni skladannya Bilshist z nih lishe realizuye pidtrimku rozpodilenoyi obrobki Krim togo bilshist rishen sho pidtrimuyut rozpodileni skladannya mozhut lishe obroblyati kod na movah C ta C Rishennya avtomatizaciyi skladannya sho pidtrimuyut rozpodilenu obrobku chasto zasnovani na Make i ne pidtrimuyut Maven abo Ant Yak priklad rishennya rozpodilenogo skladannya mozhna navesti Xoreax s IncrediBuild dlya platformi Microsoft Visual Studio Ce mozhe vimagati specifichnogo nalashtuvannya programnogo otochennya shob uspishno funkcionuvati na rozpodilenij platformi potribno vkazati roztashuvannya bibliotek zminni otochennya tosho PerevagiPolipshennya yakosti produktu Priskorennya procesu kompilyaciyi i komponuvannya Pozbavlennya vid zajvih dij Minimizaciya poganih nekorektnih skladan Pozbavlennya vid priv yazki do konkretnoyi lyudini Vedennya istoriyi skladannya i reliziv dlya rozboru vipuskiv Ekonomiya chasu i groshej zavdyaki prichinam vkazanim vishe TipiAvtomatizaciya za zapitom On Demand automation zapusk koristuvachem skriptu v komandnomu ryadku Zaplanovana avtomatizaciya Scheduled automation bezperervna integraciya yaka vidbuvayetsya u viglyadi nichnih skladan Umovna avtomatizaciya Triggered automation bezperervna integraciya sho vikonuye skladannya pri kozhnomu pidtverdzhenni zmini kodu commit u sistemi keruvannya versiyamiMakefileOdna z osoblivih form avtomatizaciyi skladannya avtomatichne stvorennya make fajliv makefiles Ci fajli sumisni z takimi instrumentami yak GNU Automake CMake imake qmake Apache Ant Apache Maven GradleVimogi do sistem skladannyaBazovi vimogi Chasti abo nichni skladannya dlya svoyechasnogo viyavlennya problem Pidtrimka keruvannya zalezhnostyami sircevogo kodu Source Code Dependency Management Obrobka riznicevogo skladannya Povidomlennya pri zbigovi sircevogo kodu pislya skladannya z nayavnimi binarnimi fajlami Priskorennya skladannya Zvit pro rezultati kompilyaciyi i komponuvannya Dodatkovi vimogi Stvorennya opisu zmin release notes ta inshoyi suputnoyi dokumentaciyi napriklad dovidnikiv Zvit pro status skladannya Zvit pro uspishne neuspishne prohodzhennya testiv Pidsumovuvannya dodanih zminenih viluchenih osoblivostej u kozhnomu novomu skladanni Programni instrumentiDokladnishe Vinoski angl Free Software Foundation Arhiv originalu za 23 kvitnya 2015 Procitovano 22 kvitnya 2015 Dr Dobb s Distributed Loadbuilds procitovano 13 kvitnya 2009 Dr Dobb s Take My Build Please arhiv originalu za 7 zhovtnya 2007 procitovano 13 kvitnya 2009 arhiv originalu za 12 kvitnya 2009 procitovano 8 kvitnya 2009 PDF Arhiv originalu PDF za 23 listopada 2008 Procitovano 22 kvitnya 2015 Arhiv originalu za 30 veresnya 2007 Procitovano 22 kvitnya 2015 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Tekst freshmeat net proignorovano dovidka Arhiv originalu za 2 bereznya 2009 Procitovano 22 kvitnya 2015 Arhiv originalu za 6 grudnya 2010 Procitovano 22 kvitnya 2015 Mayank Gupta 15 09 2008 angl Arhiv originalu za 29 kvitnya 2009 Procitovano 22 kvitnya 2015 PosilannyaMajk Klark Pragmatic Project Automation The Pragmatic Programmers ISBN 0 9745140 3 9Divis takozhBezperervna integraciya Skriptova mova Modulne testuvannya