Een door Microsoft gehoste of zelf-hostende buildagent kiezen

Voltooid

In deze les leert u meer over enkele factoren die u moet overwegen wanneer u een buildagent kiest. U leert meer over enkele voordelen en beperkingen van het gebruik van een door Microsoft gehoste agent en wat er bij het instellen van uw eigen privé-buildagent betrokken is.

Wat zijn buildagents en agentpools?

Een buildagent is een systeem waarmee buildtaken worden uitgevoerd. Dit is vergelijkbaar met een toegewezen server waarop een buil-proces wordt uitgevoerd.

Stel dat u een Azure Pipelines-project hebt dat vaak per dag buildaanvragen ontvangt, of misschien hebt u meerdere projecten die elk hetzelfde type buildagent kunnen gebruiken. U kunt buildagents indelen in agentpools om ervoor te zorgen dat er een server gereed is voor de verwerking van elke buildaanvraag.

Wanneer een build is geactiveerd, selecteert Azure Pipelines een beschikbare buildagent uit de pool. Als alle agents bezet zijn, wacht het proces tot er een agent beschikbaar komt.

Wanneer u een door Microsoft gehoste agent gebruikt, geeft u op welke VM-installatiekopie uit de pool moet worden gebruikt. Hier volgt een voorbeeld van uw bestaande buildconfiguratie die gebruikmaakt van een Ubuntu 20.04-buildagent:

pool:
  vmImage: 'ubuntu-20.04'
  demands:
  - npm

Wanneer u een door Microsoft gehoste agent gebruikt, gebruikt u vmImage om op te geven welk type systeem u nodig hebt. Microsoft biedt veel soorten VM-installatiekopieën, inclusief installatiekopieën waarmee Windows, macOS en verschillende versies van Linux worden uitgevoerd.

In de sectie demands leest u welke software of mogelijkheden nodig zijn voor de buildmachine.

Wanneer u een buildagent gebruikt uit uw eigen pool, ook wel bekend als een particuliere pool, geef u de naam van uw pool op. Hier volgt een voorbeeld:

pool:
  name: 'MyAgentPool'
  demands:
  - npm

Als u geen sectie demands nodig hebt, kunt u de syntaxis als volgt inkorten:

pool: 'MyAgentPool'

Verderop in deze module maakt u een buildagent en voegt u deze toe aan een pool.

Welke soorten agents kan ik gebruiken?

Wanneer u een buildagent kiest, zijn er twee factoren waarmee u rekening moet houden:

  • Het besturingssysteem waarop u wilt bouwen
  • Of u nu een door Microsoft gehoste agent kunt gebruiken of u moet uw eigen agent opgeven

Azure Pipelines biedt ondersteuning voor de volgende besturingssystemen:

De buildagent die u kiest, is voornamelijk afhankelijk van de hulpprogramma's die u gebruikt om uw code te bouwen. Als u bijvoorbeeld Xcode gebruikt om uw toepassingen te compileren, zou u een macOS-agent kunnen kiezen. Als u Visual Studio nodig hebt, kiest u waarschijnlijk een Windows-agent.

Uw bestaande buildconfiguratie maakt gebruik van een door Microsoft gehoste agent. Gehoste agents worden uitgevoerd op de infrastructuur die Microsoft voor u biedt.

Een privéagent maakt gebruik van infrastructuur die u opgeeft. Uw agent kan een systeem zijn dat wordt uitgevoerd in de cloud of in uw datacenter. Beide systemen werken, zolang de agent aan uw vereisten voldoet en verbinding kan maken met Azure Pipelines. In deze module gebruikt u een VIRTUELE machine die wordt uitgevoerd in Azure, die we bieden.

Wanneer moet ik mijn eigen buildagent gebruiken?

Voor veel buildtaken doet een door Microsoft gehoste agent alles wat u nodig hebt. Het is de eenvoudigste manier om aan de slag te gaan.

Microsoft zorgt voor alle beveiligings- en andere besturingssysteemupdates. U hoeft alleen maar de buildconfiguratie te definiëren die u wilt uitvoeren.

Gehoste agents bevatten ook software voor het compileren van veel algemene typen toepassingen. U kunt tijdens het buildproces alle andere benodigde software toevoegen.

Door Microsoft gehoste agents hebben enkele beperkingen, waaronder:

  • Buildduur: Een buildtaak kan maximaal zes uur worden uitgevoerd.
  • Schijfruimte: gehoste agents bieden een vaste hoeveelheid opslagruimte voor uw bronnen en uw build-uitvoer. Dit is mogelijk niet voldoende opslagruimte.
  • CPU, geheugen en netwerk: gehoste agents worden uitgevoerd op vm's voor algemeen gebruik van Microsoft Azure. Standard_DS2_v2 beschrijft de CPU-, geheugen- en netwerkeigenschappen die u kunt verwachten.
  • Interactiviteit: u kunt zich niet aanmelden bij een gehoste agent.
  • Bestandsshares: u kunt buildartefacten niet verwijderen naar UNC-bestandsshares (Universal Naming Convention).

Hoewel gehoste agents relatief eenvoudig zijn in te stellen, zijn er enkele voordelen voor het gebruik van uw eigen buildagents, waarbij u de beperkingen die we zojuist hebben beschreven, buiten beschouwing laten.

Wanneer u bijvoorbeeld gehoste agents gebruikt, deelt u de infrastructuur met andere Azure DevOps-gebruikers. Hoewel het doorgaans slechts enkele seconden duurt om uw build te starten, kan het langer duren, afhankelijk van de belasting van het Microsoft-systeem.

Wanneer u gehoste agents gebruikt, krijgt u ook een schoon systeem bij elke build. Wanneer u uw eigen buildagent gebruikt, kunt u bepalen of u elke keer een schone build wilt uitvoeren of een incrementele build wilt uitvoeren. Met een incrementele build bouwt u voort op bestaande buildhulpprogramma's en gecompileerde code. Een incrementele build kan minder tijd in beslag nemen, omdat het systeem al veel van de buildhulpprogramma's en afhankelijke onderdelen heeft geïnstalleerd.

Aan de andere kant bent u de eigenaar van de buildinfrastructuur en is het daarom uw verantwoordelijkheid ervoor te zorgen dat uw buildagents de nieuwste software- en beveiligingspatches bevatten.

Hoe stelt u een privé-buildagent in?

Een privé-buildagent bevat de software die nodig is om uw toepassingen te bouwen. Het bevat ook agentsoftware, waarmee het systeem verbinding kan maken met Azure Pipelines en buildtaken kan ontvangen.

Wanneer u een privéagent instelt, geeft u de infrastructuur op waarop de builds worden uitgevoerd. Dit biedt u flexibiliteit in hoe u uw agents levert en onderhoudt.

U kunt bijvoorbeeld:

  • De buildagent handmatig instellen: u brengt het systeem op, meldt u zich aan en installeert uw buildhulpprogramma's en de agentsoftware interactief.

  • Automatiseer het proces: u haalt het systeem op en voert een script of hulpprogramma uit om uw buildhulpprogramma's en de agentsoftware te installeren. U kunt de agent configureren nadat het systeem online is gekomen of tijdens het inrichtingsproces.

    Wanneer u bijvoorbeeld buildagents uitvoert in Azure, kunt u een Arm-sjabloon (Azure Resource Manager) of Bicep gebruiken om het systeem weer te geven en te configureren om te fungeren als een buildagent, allemaal in één stap. Terraform van HashiCorp is een andere manier om het proces te automatiseren. Terraform werkt met veel typen infrastructuur, met inbegrip van Azure.

  • Een installatiekopie maken: u maakt een installatiekopie of momentopname van een geconfigureerde omgeving. Vervolgens kunt u de installatiekopie gebruiken om zo veel identieke systemen te maken als u in uw pool nodig hebt.

Handmatige configuratie is een goede manier om aan de slag te gaan, omdat u hiermee inzicht krijgt in het proces. Het is ook de snelste manier om alles in te stellen wanneer u slechts één buildagent nodig hebt.

Automatisering is handig wanneer u veel buildagents nodig hebt, of u moet de build-infrastructuur regelmatig omhoog en afbreken. U kunt overstappen van een handmatig proces naar een geautomatiseerd proces wanneer u meerdere agents nodig hebt.

Afbeeldingen zijn een vorm van automatisering. Ze kunnen tijd besparen, omdat alle software vooraf is geconfigureerd. Als compromis moet u mogelijk regelmatig uw installatiekopieën opnieuw bouwen om de nieuwste patches voor het besturingssysteem en buildhulpprogramma's op te nemen. Packer van HashiCorp is een populair hulpprogramma voor het maken van installatiekopieën.

Voor uw Space Game-scenario besluit u een privé-buildagent te gebruiken.

Test uw kennis

1.

Stel dat u een videogame bouwt. Het buildproces duurt twee uur en gebruikt 18 GB tot 20 GB schijfruimte om de gameactiva te compileren. Welk soort buildagent kunt u gebruiken?

2.

Stel dat u een toepassing bouwt die wordt uitgevoerd op macOS, Linux en Windows. Hoe kunt u de app bouwen voor elk platform waarop u zich richt?

3.

Een zelf-hostende buildagent: