Pijplijnfasen begrijpen
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.
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.
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:
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:
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:
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:
- Lint: Gebruik bicep linter om te controleren of het Bicep-bestand goed is gevormd en geen duidelijke fouten bevat.
- Valideren: Gebruik het preflightvalidatieproces van Azure Resource Manager om te controleren op problemen die kunnen optreden wanneer u implementeert.
- 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.
- Implementeren: Verzend uw implementatie naar Resource Manager en wacht tot deze is voltooid.
- 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.