Pijplijnfasen begrijpen

Voltooid

Met pijplijnen kunt u de stappen in uw implementatieproces automatiseren. Uw proces kan verschillende logische groepen taken bevatten die u wilt uitvoeren. In deze les leert u meer over pijplijnfasen en hoe u deze gebruikt om kwaliteitscontroleprocessen toe te voegen aan uw Bicep-implementaties.

Wat zijn pijplijnfasen?

Fasen helpen u bij het verdelen van uw pijplijn in meerdere logische blokken. Elke fase kan een of meer taken bevatten. Taken bevatten een geordende lijst met stappen die moeten worden voltooid, zoals het uitvoeren van opdrachtregelscripts.

Diagram met een pijplijn met een fase met één taak. De taak bevat vier stappen.

Fasen kunnen in uw pijplijn worden gebruikt om een scheiding van problemen te markeren. Wanneer u bijvoorbeeld met Bicep-code werkt, is het valideren van de code een afzonderlijke kwestie van het implementeren van uw Bicep-bestand. Wanneer u een geautomatiseerde pijplijn gebruikt, worden het bouwen en testen van uw code vaak continue integratie (CI) genoemd. Het implementeren van code in een geautomatiseerde pijplijn wordt vaak continue implementatie (CD) genoemd.

In CI-fasen controleert u de geldigheid van de wijzigingen die zijn aangebracht in uw code. CI-fasen bieden kwaliteitscontrole. Ze kunnen worden uitgevoerd zonder dat dit van invloed is op uw live productieomgeving.

In veel programmeertalen moet code worden gebouwd voordat iemand deze kan uitvoeren. Wanneer een Bicep-bestand wordt geïmplementeerd, wordt het geconverteerd of getranspileerd, van Bicep naar JSON. Met de hulpprogramma's wordt dit proces automatisch uitgevoerd. In de meeste gevallen hoeft u bicep-code niet handmatig te bouwen voor JSON-sjablonen in uw pijplijn. We gebruiken echter nog steeds de term continue integratie als we het hebben over Bicep-code, omdat de andere onderdelen van CI nog steeds van toepassing zijn, zoals het valideren van uw code.

Nadat uw CI-fasen zijn uitgevoerd, moet u uw vertrouwen hebben vergroot dat de wijzigingen die u hebt aangebracht, ook succesvol worden geïmplementeerd. In CD-fasen implementeert u uw code in elk van uw omgevingen. Meestal begint u met testen en andere niet-productieomgevingen en gaat u door naar productieomgevingen. In deze module implementeren we in één omgeving. In een toekomstige module leert u hoe u uw implementatiepijplijn kunt uitbreiden om te implementeren in meerdere omgevingen, zoals niet-productie- en productieomgevingen.

Fasen worden in een reeks uitgevoerd. U kunt bepalen hoe en wanneer elke fase wordt uitgevoerd. U kunt bijvoorbeeld uw CD-fasen zo configureren dat ze alleen worden uitgevoerd nadat uw CI-fasen zijn uitgevoerd. U kunt ook meerdere CI-fasen hebben die op volgorde moeten worden uitgevoerd, bijvoorbeeld om uw code te bouwen en deze vervolgens te testen. U kunt ook een terugdraaifase opnemen die alleen wordt uitgevoerd als eerdere implementatiefasen zijn mislukt.

Naar links verschuiven

Met behulp van fasen kunt u de kwaliteit van uw code controleren voordat u deze implementeert. Deze fasen worden ook wel verschuiving naar links genoemd.

Houd rekening met een tijdlijn van de activiteiten die u uitvoert wanneer u code schrijft. De tijdlijn begint met de plannings- en ontwerpfasen. Vervolgens gaat het over naar de bouw- en testfasen. Ten slotte implementeert en moet u vervolgens uw oplossing ondersteunen.

Grafiek met een tijdlijn op de horizontale as, kosten op de verticale as en een lijn die laat zien dat de kosten later een fout verhogen.

Het is een goed begrepen regel in softwareontwikkeling die u eerder in het proces vindt (hoe dichter bij de tijdlijn), hoe eenvoudiger, sneller en goedkoper het is om een oplossing te vinden. Hoe later in het proces u een fout onderscheppen, hoe moeilijker het is om te herstellen.

Het doel is dus om de detectie van problemen naar de linkerkant van het voorgaande diagram te verplaatsen. In deze module ziet u hoe u tijdens de voortgang meer validatie en testen aan uw pijplijn kunt toevoegen.

U kunt zelfs validatie goed toevoegen voordat de implementatie begint. Wanneer u met hulpprogramma's zoals Azure DevOps werkt, vertegenwoordigen pull-aanvragen doorgaans wijzigingen die iemand in uw team wil aanbrengen in de code in uw hoofdbranch. Het is handig om een andere pijplijn te maken waarmee uw CI-stappen automatisch worden uitgevoerd tijdens het beoordelingsproces voor de pull-aanvraag. Met deze techniek kunt u controleren of de code nog steeds werkt, zelfs met de voorgestelde wijzigingen. Als de validatie slaagt, hebt u er vertrouwen in dat de wijziging geen problemen veroorzaakt wanneer deze wordt samengevoegd met uw hoofdbranch. Als de controle mislukt, weet u dat er meer werk moet worden verricht voordat de pull-aanvraag gereed is om samen te voegen.

Belangrijk

Geautomatiseerde validatie en tests zijn alleen zo effectief als de tests die u schrijft. Het is belangrijk om rekening te houden met de dingen die u moet testen en de stappen die u moet uitvoeren om er zeker van te zijn dat uw implementatie in orde is.

Een pijplijnfase definiëren

Elke pijplijn bevat ten minste één fase. Als uw pijplijn slechts één fase heeft, hoeft u deze niet expliciet te definiëren. Azure Pipelines definieert deze automatisch voor u. Wanneer u meerdere fasen in een pijplijn hebt, moet u deze definiëren. Fasen worden uitgevoerd in een reeks die u opgeeft.

Stel dat u een Bicep-bestand hebt gebouwd dat u twee keer moet implementeren: eenmaal in de Verenigde Staten en eenmaal naar infrastructuur in Europa. Voordat u implementeert, valideert u uw Bicep-code. Hier volgt een afbeelding van een pijplijn met meerdere fases waarmee dit proces wordt gedefinieerd:

Diagram met een pijplijn met een validatiefase, een Deploy U S-fase en een Deploy Europe-fase, die op volgorde wordt uitgevoerd.

U ziet dat dit voorbeeld drie fasen heeft. De fase Valideren is vergelijkbaar met een CI-fase. Vervolgens worden de fasen DeployUS en DeployEurope uitgevoerd. Elke implementeert de code in een van de omgevingen.

De fasen worden als volgt gedefinieerd in een YAML-pijplijnbestand:

stages:

- stage: Test
  jobs:
  - job: Test

- stage: DeployUS
  jobs: 
  - job: DeployUS

- stage: DeployEurope
  jobs: 
  - job: DeployEurope

De volgorde van fasen beheren

Standaard worden de fasen uitgevoerd in de volgorde die u definieert. Een fase wordt alleen uitgevoerd als de vorige fase is geslaagd. U kunt afhankelijkheden toevoegen tussen de fasen om de volgorde te wijzigen.

Als u doorgaat met het vorige voorbeeld, stelt u zich voor dat u beide implementaties parallel wilt uitvoeren, zoals:

Diagram met een pijplijn met een validatiefase, een Implementatie-U S-fase en een Fase Europa implementeren, waarbij de twee implementatiefasen parallel worden uitgevoerd.

U kunt de afhankelijkheden tussen fasen opgeven met behulp van het dependsOn trefwoord:

stages:

- stage: Test
  jobs:
  - job: Test

- stage: DeployUS
  dependsOn: Test
  jobs: 
  - job: DeployUS

- stage: DeployEurope
  dependsOn: Test
  jobs: 
  - job: DeployEurope

Wanneer u het dependsOn trefwoord gebruikt, wacht Azure Pipelines tot de afhankelijke fase is voltooid voordat de volgende fase wordt gestart. Als Azure Pipelines detecteert dat aan alle afhankelijkheden voor meerdere fasen is voldaan, kunnen deze fasen parallel worden uitgevoerd.

Notitie

In werkelijkheid worden fasen en taken alleen parallel uitgevoerd als u voldoende agents hebt om meerdere taken tegelijk uit te voeren. Wanneer u door Microsoft gehoste agents gebruikt, moet u mogelijk extra parallelle taken aanschaffen om dit te bereiken.

Soms wilt u een fase uitvoeren wanneer een vorige fase mislukt. Hier volgt bijvoorbeeld een andere pijplijn. Als de implementatie mislukt, wordt er onmiddellijk daarna een fase met de naam Terugdraaien uitgevoerd:

Diagram met een pijplijn met een implementatiefase en een voorwaarde, zodat een fout in de implementatiefase resulteert in het uitvoeren van de terugdraaifase.

U kunt het condition trefwoord gebruiken om een voorwaarde op te geven waaraan moet worden voldaan voordat een fase wordt uitgevoerd:

stages:

- stage: Test
  jobs:
  - job: Test

- stage: Deploy
  dependsOn: Test
  jobs: 
  - job: Deploy

- stage: Rollback
  condition: failed('Deploy')
  jobs: 
  - job: Rollback

Wanneer alles goed gaat, voert Azure Pipelines eerst de validatiefase uit en wordt vervolgens de implementatiefase uitgevoerd. De terugdraaifase wordt overgeslagen. Als de implementatiefase echter mislukt, voert Azure Pipelines de terugdraaifase uit. Verderop in deze module vindt u meer informatie over terugdraaien.

Elke taak wordt uitgevoerd op een nieuwe agent. Dat betekent dat elke taak begint vanuit een schone omgeving, dus in elke taak moet u de broncode meestal als eerste stap uitchecken.

Bicep-implementatiefasen

Een typische Bicep-implementatiepijplijn bevat verschillende fasen. Naarmate de pijplijn door de fasen loopt, is het doel om steeds meer vertrouwen te krijgen dat de latere fasen zullen slagen. Dit zijn de algemene fasen voor een Bicep-implementatiepijplijn:

Diagram met een Bicep-implementatiepijplijn met vijf fasen: Lint, Valideren, Preview, Implementeren en Betrouwbaarheidstest.

  1. Lint: Gebruik bicep linter om te controleren of het Bicep-bestand goed is gevormd en geen duidelijke fouten bevat.
  2. Valideren: Gebruik het preflightvalidatieproces van Azure Resource Manager om te controleren op problemen die kunnen optreden wanneer u implementeert.
  3. Preview: Gebruik de what-if-opdracht om de lijst met wijzigingen te valideren die worden toegepast op uw Azure-omgeving. Vraag een mens om de wat-als-resultaten handmatig te bekijken en de pijplijn goed te keuren om door te gaan.
  4. Implementeren: Verzend uw implementatie naar Resource Manager en wacht tot deze is voltooid.
  5. Betrouwbaarheidstest: Voer eenvoudige controles na de implementatie uit op een aantal belangrijke resources die u hebt geïmplementeerd. Deze beoordelingen worden betrouwbaarheidstests van de infrastructuur genoemd.

Uw organisatie kan een andere reeks fasen hebben of u moet uw Bicep-implementaties integreren in een pijplijn waarmee andere onderdelen worden geïmplementeerd. Nadat u weet hoe de fasen werken, kunt u een pijplijn ontwerpen die aan uw behoeften voldoet.

In deze module leert u meer over de fasen die hier worden vermeld en bouwt u geleidelijk een pijplijn met elke fase. U leert ook het volgende:

  • Hoe pijplijnen het implementatieproces stoppen als er iets onverwachts gebeurt in een van de vorige fasen.
  • De pijplijn zo configureren dat deze wordt onderbroken totdat u handmatig controleert wat er in een vorige fase is gebeurd.