Rakennusautomaatio on vaihe ohjelmistokehitysprosessissa, joka automatisoi monenlaisia tehtäviä, joita ohjelmoijat suorittavat päivittäisessä toiminnassaan.
Sisältää toimintoja, kuten:
Pääasiallinen kokoonpanoautomaation keino on erikoistyökalun käyttö; yksi varhaisista ja historiallisesti merkittävistä työkaluista on make -apuohjelma , joka määritti pitkälti myöhemmin ilmestyneiden työkalujen tyylin ja menetelmät . Yksi tällainen elementti on Makefile -muoto , jota useimmat käytetyt työkalut tukevat ( Automake , CMake , imake , qmake , nmake , wmake , Apache Ant , Apache Maven , OpenMake Meister , Gradle ). Automaatiotyökalujen tärkeimmät vaatimukset ovat tuki jatkuvalle integraatioteknologialle , erityisesti jatkuvat " yölliset koontiversiot " [1] [2] [3] , lähdekoodiriippuvuuden hallinta, differentiaalinen koontituki, ilmoitus, kun lähdekoodi vastaa (koontiversion jälkeen) olemassa olevat binaaritiedostot, jotka tarjoavat käteviä raportteja kokoamisen ja linkityksen tuloksista, automaattista testien suorittamista ja ehdollista suoritusta jakson tuloksista riippuen.
Eri työkaluissa käytetyt automaatiotyypit:
Historiallisesti kehittäjät ovat käyttäneet koontiautomaatiota kääntäjien ja linkittajien kutsumiseen koontiskriptistä, toisin kuin kääntäjälle komentoriviltä . On melko helppoa välittää yksi lähdemoduuli kääntäjälle komentorivillä ja sitten linkittäjälle lopullisen objektin luomiseksi. Kuitenkin, kun yrität kääntää tai linkittää useita moduuleja lähdekoodilla ja tietyssä järjestyksessä, tämän prosessin tekeminen manuaalisesti komentorivin avulla tuntuu liian hankalalta. Paljon houkuttelevampi vaihtoehto on Make -apuohjelman tukema komentosarjakieli . Tämän työkalun avulla voit kirjoittaa rakennuskomentosarjoja, määrittää järjestyksen, jossa niitä kutsutaan, käännös- ja linkitysvaiheet ohjelman rakentamiseksi. GNU Make [4] tarjoaa myös lisäominaisuuksia, kuten "makedepend", joiden avulla voit määrittää ehtoja lähdekoodin sisällyttämiselle jokaisessa koontivaiheessa. Tämä oli kokoonpanoautomaation alku. Päätavoitteena oli automatisoida puhelut kääntäjille ja linkittäjille. Kun rakennusprosessi kasvoi ja muuttui monimutkaisemmaksi, kehittäjät alkoivat lisätä toimintoja ennen ja jälkeen kääntäjän kutsuja, kuten tarkistaa ( eng. check-out ) kopioitujen objektien versiot testijärjestelmässä. Termi "rakennusautomaatio" sisältää jo hallinnan ja toiminnot ennen ja jälkeen käännös- ja linkittämistä sekä toiminnot kääntämisen ja linkittämisen aikana.
2000-luvulla rakentamisen hallintaratkaisut tekivät automatisoidusta rakennusprosessista entistä kätevämmän ja hallittavamman. On olemassa sekä kaupallisia että avoimen lähdekoodin ratkaisuja automatisoituun kokoonpanoon ja tämän prosessin ohjaamiseen. Jotkin ratkaisut pyrkivät automatisoimaan vaiheet ennen ja jälkeen rakennuskomentosarjojen kutsumisen, kun taas toiset menevät pidemmälle kuin ennen ja jälkeen komentosarjan käsittelyn ja automatisoivat käännös- ja linkitysprosessin täysin, mikä poistaa manuaalisen komentosarjan tarpeen. Tällaiset työkalut ovat hyödyllisiä jatkuvassa integraatiossa , jossa vaaditaan toistuvia käännöskutsuja ja väliversioiden käsittelyä.
Hajautettu koontiversio tarkoittaa, että kääntäjä- ja linkittäjäkutsut voidaan välittää useille tietokoneille koontiversioiden nopeuttamiseksi. Hajautetun koontiprosessin täytyy sisältää logiikkaa lähdekoodin riippuvuuksien määrittämiseksi oikein, jotta käännös- ja linkkivaiheet voidaan suorittaa eri koneilla. Rakennusautomaatioratkaisun on kyettävä hallitsemaan näitä riippuvuuksia voidakseen suorittaa hajautettuja koontiversioita. Jotkut rakennustyökalut voivat tunnistaa nämä suhteet automaattisesti ( Rational ClearMake distributed [5] , Electric Cloud ElectricAccelerator [6] ), kun taas toiset riippuvat käyttäjän syötteestä ( Platform LSF lsmake [7] ). Rakennusautomaatio, joka pystyy lajittelemaan lähdekoodin riippuvuussuhteita, voidaan myös määrittää suorittamaan käännös- ja linkkitoimintoja rinnakkaisessa suoritustilassa. Tämä tarkoittaa, että kääntäjiä ja linkittäjiä voidaan kutsua monisäikeisessä tilassa koneessa, joka on konfiguroitu useammalla kuin yhdellä prosessoriytimellä.
Kaikki rakennusautomaatiotyökalut eivät voi suorittaa hajautettuja koontiversioita. Useimmat niistä toteuttavat vain hajautetun käsittelyn tuen (eli lähettävät tehtäviä suorittamaan erilaisia komentosarjoja eri koneille, esimerkiksi monien testiskriptien suorittamisen jälkeen). Myös useimmat hajautettuja koontiversioita tukevat ratkaisut voivat käsitellä vain C- ja C++-koodia . Hajautettua prosessointia tukevat rakennusautomaatioratkaisut ovat usein Make-pohjaisia eivätkä tue Mavenia tai Ant .
Esimerkki hajautetusta koontiratkaisusta on Xoreaxin IncrediBuild [8] Microsoft Visual Studio -alustalle . Tämä voi vaatia ohjelmistoympäristön tietyn konfiguroinnin toimiakseen onnistuneesti hajautetulla alustalla (sinun on määritettävä kirjastojen sijainti, ympäristömuuttujat ja niin edelleen).
Asennusautomaatiojärjestelmät | |
---|---|