In Azure DevOps is het al sinds een lange tijd mogelijk om builds en deployments te automatiseren. Hiervoor zijn de zogenaamde build- en release pipelines beschikbaar. Sinds enige maanden zijn daar ook de YAML pipelines aan toegevoegd. Als je nog niet bekend bent met YAML of gewoon veel gebruik maak van deze ‘classic’ pipelines, lijkt er misschien weinig reden om over te stappen naar YAML pipelines. Toch bieden deze YAML pipelines verschillende voordelen.
Pipeline as code
Het grootste voordeel is dat je pipeline onderdeel wordt van je code. YAML pipelines in Azure DevOps kun je alleen gebruiken als je gebruik maakt van een Git repository. Je YAML pipeline wordt dan ook een onderdeel van je Git repository. Alle voordelen van Git zijn daarmee ook meteen van toepassing op je pipeline, denk aan history, diff en pull requests.
Doordat je pipeline onderdeel is van je code, kun je altijd herleiden welke aanpassingen aan de pipeline zijn gedaan en welke versie van de pipeline bij welke versie van de code hoort.
Code review en Pull Requests
Een groot voordeel van Git repositories is dat je gebruik kunt maken van pull requests. Met policies op je repository kun je afdwingen dat aan bepaalde checks is voldaan, voordat een aanpassing doorgevoerd wordt. Aanpassingen aan de pipeline kunnen daardoor ook niet zomaar meer even op vrijdagmiddag tussendoor worden gedaan, maar zullen eerst gereviewd moeten worden. Dit bevordert het samenwerken aan de pipeline en verkleint de kans op fouten en productieproblemen.
Multistage pipelines
Waar de YAML pipelines al wat vaker gebruikt worden voor build pipelines, zijn deployments nu ook mogelijk met multistage pipelines. Een YAML pipeline is opgedeeld in een of meerdere stages. Als je meerdere stages gebruikt, spreek je van een multistage pipeline. Een stage is een verzameling van jobs die aan elkaar gerelateerd zijn, bijvoorbeeld de jobs die nodig zijn om je applicatie te builden. Of de jobs voor een deployment naar een omgeving. De mogelijkheden hiervan zijn vergelijkbaar met de classic release pipelines. Sommige onderdelen zijn nog niet beschikbaar voor de YAML pipelines, maar andere onderdelen zijn juist alleen beschikbaar voor YAML pipelines (template checks). In de toekomst zullen de meeste vernieuwingen op de YAML pipelines toegevoegd worden. Het is vaak wel even wennen als je van de classic pipelines afkomt, maar uiteindelijk zul je het als voordeel zien dat je de complete CI/CD pipeline in een bestand hebt en in één overzicht kunt zien wat de status van de complete pipeline is. Als je daar echt niet aan kunt wennen, dan blijft het ook met YAML pipelines mogelijk om de CI en CD pipelines gescheiden te houden.
Hergebruik en standaardisatie
Met YAML pipelines kun je ook eenvoudiger gebruik maken van templates. Deze templates hebben twee functies. Je kunt pipelines of onderdelen daarvan eenvoudig hergebruiken, vergelijkbaar met de task groups in de classic pipelines. Daarnaast kun je met templates ook afdwingen dat deployments naar omgevingen gebruik moeten maken van een specifiek template. Hiermee kun je bijvoorbeeld afdwingen dat een deployment naar productie altijd een change aan moeten maken in een extern systeem. Of dat code altijd eerst gescand wordt op gevoelige gegevens of eerst statische code analyse moet doorlopen.
Koppeling met work items
Ook in de classic pipelines kun je de geschiedenis van je pipeline terugvinden, maar je kunt niet terugvinden waarom bepaalde wijzigingen zijn gedaan. Door gebruik te maken van YAML pipelines, kun je aanpassingen ook koppelen aan work items. Daarmee kun je inzichtelijk maken waarom bepaalde wijzigingen op een pipeline zijn gedaan. Ook kun je zien wie bepaalde aanpassingen heeft gedaan. En, als je gebruik maakt van pull requests, wie de aanpassing heeft goedgekeurd. In geval van fouten in de pipeline, kun je samen met die personen zoeken naar een oplossing.
Moet ik nu overstappen naar YAML pipelines?
De mogelijkheden van de YAML pipelines zijn al vergelijkbaar met de classic pipelines. Op sommige onderdelen en voor sommige organisaties voldoen de classic pipelines misschien nog beter dan de YAML pipelines, maar op bepaalde onderdelen bieden de YAML pipelines wat meer mogelijkheden. Of je de overstap al moet maken blijft deels een persoonlijke voorkeur. Het feit dat een YAML pipeline onderdeel van je code is, met alle voordelen die dit biedt, zou wat ons betreft de doorslag moeten geven.
Extra tip: alle opties voor een taak
Veel taken in Azure DevOps maken gebruik van opties die je aan of uit kunt zetten. In de classic pipelines was dit eenvoudig te herkennen doordat een checkbox aan of uit staat of een tekstveld leeg gelaten is. In YAML pipelines worden uitgeschakelde opties meestal verwijderd. Dit maakt de code leesbaarder, maar ook het debuggen lastiger omdat je niet altijd weet welke opties een taak allemaal heeft. Als je de YAML pipeline vanuit de pipeline Edit, zie je boven de tasks “Settings” staan, als je daarop klikt krijg je rechts in een visuele weergave de opties voor de betreffende taak te zien:
Interesse of benieuwd hoe het werkt?
Onlangs hebben we een Webinar gehouden over YAML Pipelines, waarin we onder andere laten zien hoe je een YAML pipeline maakt en wat je ermee kunt. U kunt dit webinar hier terugkijken: webinar YAML Pipelines.
Heeft u behoefte aan meer informatie? Of heeft u hulp nodig met YAML pipelines, het opzetten van CI/CD Pipelines of wilt u uw huidige pipelines omzetten naar YAML Pipelines? Kijk dan vooral ook hier of neem gerust contact met ons op.
Wilt u op de hoogte blijven van de nieuwste mogelijkheden in Azure DevOps Services. Vier keer per jaar organiseren wij het webinar Nieuw in Azure DevOps.