DevOpsAzure DevOps – Pipeline en Task Decorators

Azure DevOps – Pipeline en Task Decorators

Azure DevOps Pipelines werken op basis van taken die sequentieel worden uitgevoerd, om zo tot een gewenst resultaat te komen. Het kan zijn dat een bedrijf wil dat bepaalde taken altijd worden uitgevoerd. Denk hierbij bijvoorbeeld aan security- of reportagetaken.

Microsoft heeft hiervoor Decorators in het leven geroepen. Er zijn twee soorten Decorators.

  1. Pipeline Decorators
  2. Task Decorators

In dit blog wordt uitgelegd wat het verschil is tussen deze twee typen en hoe ze ingezet kunnen worden.

Wat is een Decorator

Een Decorator is eigenlijk een Custom Extension waarin wordt aangegeven dat er standaard extra taken aan elke pipeline wordt toegevoegd. Dit geldt voor elke pipeline binnen de Azure DevOps omgeving, dus niet alleen voor een project.

Pipeline Decorators

Een Pipeline Decorator zorgt ervoor dat één of meerdere taken voor en/of na elke pipeline gestart worden. Dit is handig voor de volgende zaken:

  • Security
  • Rapportages
  • Opschonen van lokale build servers

De Decorator zelf is niet meer als een YAML-bestand, waarin wordt aangegeven welke taken er worden toegevoegd aan de pipeline. In dit voorbeeld hebben we de command line task gebruikt:

Nu moeten we nog aangeven dat we my-decorator.yml willen gebruiken. Dit doen we in de vss-Extension.json

De eerste 25 regels zijn standaard binnen de vss-extension.json. Voor de Pipeline Decoration kijken we naar regel 26 t/m 37. Hier wordt aangegeven dat het een post-job-task is, wat inhoudt dat de command-line die in my-decorator.yml is gedefinieerd, als allereerste wordt uitgevoerd. De demo pipeline heeft maar één taak en dat is het uploaden van een artifact.


Het resultaat:

Pre decoratie Post decoratie

Zoals zichtbaar in de post-decoratie screenshot is nu de Post-Job: Run Post Job script erbij gekomen, zonder dat we daarvoor onze demo pipeline hebben aangepast.

Task Decorators

Task Decorators werken op dezelfde manier, alleen worden deze niet voor of na een pipeline geplaatst, maar voor of na een taak in de pipeline. Een Task Decorator kan op drie manieren ingezet worden;

  • Draai de Decorator voor een taak.
  • Draai de Decorator na een taak.
  • Draai de Decorator voor en na een taak.

We hergebruiken de vss-extension.json uit de Pipeline Decorators, maar vervangen regel 26 t/m 37 voor de code die nodig is voor Task Decoration.

Op regel 31 geven we aan dat het een pre-task task is. Op regel 35 verwijzen we naar het ID van de taak waarbij de Decorator geactiveerd moet worden. Dit ID kan worden opgehaald door de een pipeline met de task in debug modus te draaien. In de stap Initialize Job wordt weergegeven welke taken er voor de pipeline worden gebruikt.

Voorbeeld:

##[debug]Task 'PublishPipelineArtifact' has been downloaded into 'D:\a\_tasks\PublishPipelineArtifact_ecdc45f6-832d-4ad9-b52b-ee49e94659be\1.199.0'.

Als we de Pipeline draaien, krijgen we het volgende resultaat;

Pre decoratie Post decoratie

Conclusie

Dankzij de Pipeline Decorators is het mogelijk om standaard taken altijd te draaien. Dit kan bijdragen aan de standaardisatie, veiligheid en betrouwbaarheid voor alle pipelines binnen de organisatie.

Peter Barendse, DevOps Engineer

  • DevOps-program-banner