Monteringsautomatisering

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 25. maj 2022; verifikation kræver 1 redigering .

Byg automatisering  er et trin i softwareudviklingsprocessen, der automatiserer en lang række opgaver, som programmører udfører i deres daglige aktiviteter.

Indeholder handlinger som:

Det vigtigste middel til montageautomatisering er brugen af ​​et specialiseret værktøj; et af de tidlige og historisk betydningsfulde værktøjer er make -værktøjet , som i høj grad bestemte stilen og metoderne til værktøjer, der dukkede op senere . Et sådant element er Makefile -formatet, der understøttes af de mest udbredte værktøjer ( Automake , CMake , imake , qmake , nmake , wmake , Apache Ant , Apache Maven , OpenMake Meister , Gradle ). Nøglekravene til automatiseringsværktøjer er understøttelse af kontinuerlige integrationsteknologier , især konstante " natlige builds " [1] [2] [3] , styring af kildekodeafhængighed, differentiel build-understøttelse, meddelelse, når kildekoden matcher (efter build) med eksisterende binære filer, der giver praktiske rapporter om resultaterne af kompilering og sammenkædning, automatisk afvikling af test og betinget udførelse afhængigt af resultaterne af passagen.

Typer af automatisering, der bruges i forskellige værktøjer:

Historie

Historisk har udviklere brugt build-automatisering til at kalde compilere og linkere fra et build-script, i modsætning til at kalde compileren fra kommandolinjen . Det er ret nemt at sende et kildemodul til compileren på kommandolinjen og derefter til linkeren for at skabe det endelige objekt. Men når man prøver at kompilere eller linke mange moduler med kildekode, og i en bestemt rækkefølge, virker det for ubelejligt at udføre denne proces manuelt ved hjælp af kommandolinjen. Et meget mere attraktivt alternativ er scriptsproget, der understøttes af Make -værktøjet . Dette værktøj giver dig mulighed for at skrive build-scripts, definere den rækkefølge, de kaldes i, kompileringen og sammenkædningstrinene til opbygning af programmet. GNU Make [4] giver også yderligere funktioner, såsom "makedepend", for eksempel, som giver dig mulighed for at specificere betingelser for at inkludere kildekode på hvert trin af bygningen. Dette var begyndelsen på montageautomatisering. Hovedmålet var at automatisere opkald til compilere og linkere. Efterhånden som byggeprocessen voksede og blev mere kompleks, begyndte udviklere at tilføje handlinger før og efter compiler-kald, såsom kontrol af ( eng.  check-out ) versioner af kopierede objekter på testsystemet. Udtrykket "byggeautomatisering" omfatter allerede styring og handlinger før og efter kompilering og sammenkædning, samt handlinger under kompilering og sammenkædning.

I 2000'erne gjorde byggestyringsløsninger den automatiserede byggeproces endnu mere bekvem og overskuelig. Der er både kommercielle og open source-løsninger til at udføre automatiseret montage og kontrollere denne proces. Nogle løsninger sigter mod at automatisere trinene før og efter opkald til build-scripts, mens andre går ud over trinene før og efter scriptbehandling og fuldautomatiserer kompilerings- og linkprocessen, hvilket eliminerer behovet for manuel scripting. Sådanne værktøjer er nyttige til kontinuerlig integration , hvor hyppige kompileringsopkald og behandling af mellemliggende builds er påkrævet.

Distribueret samling

Distribueret build betyder, at compiler- og linkeropkald kan sendes til flere computere for at fremskynde builds. En distribueret byggeproces skal have en vis logik for korrekt at bestemme afhængighederne i kildekoden for at udføre kompilerings- og linktrinene på forskellige maskiner. Bygningsautomatiseringsløsningen skal være i stand til at håndtere disse afhængigheder for at kunne udføre distribuerede builds. Nogle byggeværktøjer kan genkende disse relationer automatisk ( Rational ClearMake distribueret [5] , Electric Cloud ElectricAccelerator [6] ), mens andre afhænger af brugerinput ( Platform LSF lsmake [7] ). Bygautomatisering, som er i stand til at sortere kildekodeafhængighedsforhold, kan også konfigureres til at udføre kompilerings- og linkhandlinger i parallel eksekveringstilstand. Dette betyder, at compilere og linkere kan kaldes i multi-threaded-tilstand på en maskine, der er konfigureret med mere end én processorkerne.

Ikke alle byggeautomatiseringsværktøjer kan udføre distribuerede builds. De fleste af dem implementerer kun understøttelse af distribueret behandling (det vil sige, sender opgaver til at udføre forskellige scripts til forskellige maskiner, for eksempel til scenen efter at have udført mange testscripts). Desuden kan de fleste løsninger, der understøtter distribuerede builds, kun håndtere C- og C++-kode . Byg automationsløsninger, der understøtter distribueret behandling, er ofte Make-baserede og understøtter ikke Maven eller Ant .

Et eksempel på en distribueret byggeløsning er Xoreax's IncrediBuild [8] til Microsoft Visual Studio -platformen . Dette kan kræve specifik konfiguration af softwaremiljøet for at kunne fungere med succes på en distribueret platform (du skal angive placeringen af ​​biblioteker, miljøvariabler og så videre).

Noter

  1. Build and Release Management | freshmeat.net Arkiveret fra originalen den 30. september 2007.
  2. IBM developerWorks: Vedligeholdelse af websted . Hentet 4. oktober 2009. Arkiveret fra originalen 2. marts 2009.
  3. Buildbot (downlink) . Hentet 4. oktober 2009. Arkiveret fra originalen 6. december 2010. 
  4. GNU Make - GNU Project - Free Software Foundation (FSF) . Hentet 4. oktober 2009. Arkiveret fra originalen 5. juli 2006.
  5. Dr. Dobb's Distributed Loadbuilds , < http://www.ddj.com/architect/184405385 > . Hentet 13. april 2009. 
  6. Dr. Dobb's Take My Build, Please , < http://www.ddj.com/architect/184415472 > 
  7. LSF Brugervejledning - Brug af lsmake , < http://www.lle.rochester.edu/pub/support/lsf/10-lsmake.html > . Hentet 13. april 2009. Arkiveret 7. oktober 2007 på Wayback Machine 
  8. Distribuerede Visual Studio Builds , < http://www.xoreax.com/solutions_vs.htm > . Hentet 8. april 2009. Arkiveret 12. april 2009 på Wayback Machine 

Litteratur