Artikelen

Azure DevOps: onderscheid Build / Release pipelines verdwijnt

Azure DevOps

Azure DevOps: onderscheid Build / Release pipelines verdwijnt

Goed nieuws: Niet alleen je build-, maar ook je release kun je voortaan binnen Azure DevOps automatiseren met YAML-definities. Om dat goed op te lossen, heeft Microsoft een kleine wijziging in aanpak van CI/CD toegepast.

Zoals we de laatste jaren van Microsoft gewend zijn, houden ze een ontzagwekkend tempo aan met nieuwe features in producten waar ze de focus op leggen. Azure DevOps is daar een goed voorbeeld van.

Kort geleden (7 mei) is er een grote update geweest van Azure Pipelines, waar ik één ding eruit wil lichten: multi-stage YAML pipelines.

YAML-pipelines

YAML-pipelines, wat zijn dat ook alweer? YAML is een markup-taaltje vanuit Yahoo. Microsoft heeft al een tijd geleden deze taal uitverkoren om het eenvoudig te maken om je build-definities te beheren.

Wacht even. Geen GUI, maar een opmaak-taaltje. En dat moet het eenvoudiger maken?

Correct! Om heel eerlijk te zijn: om mee te beginnen is een YAML-pipeline niet zomaar voor iedereen eenvoudiger. Maar het is wel de standaard! De grafische interface die je helpt om je pipeline in te richten is echter nog steeds beschikbaar, wanneer je in de eerste stap van de "New pipeline" wizard kiest voor "Use the classic editor":

use classic editor in devops

Wanneer je echter eenmaal een pipeline hebt ingericht (en je bent enigszins gewend aan Azure DevOps), dan loont het vrij snel om over te gaan op YAML:

  • De hele pipeline-definitie zit in enkele regels code. Alle niet-gebruikte opties staan er ook niet in. Dat maakt de definitie een stuk overzichtelijker en leesbaarder (geen optie die je gemist hebt omdat-ie onder een ander tabje verstopt staat).
  • Het YAML-bestand staat (yay!) gewoon in een Azure Repos repository. Dus geen verschillende soorten versiebeheer meer binnen DevOps: je Wiki, je code en je pipelines staan allemaal gewoon in Repos. Dat maakt het een stuk eenduidiger.
  • De herbruikbaarheid is vele malen beter. Want hoewel je de GUI-pipelines kon je exporteren via een JSON-export, zat je vervolgens met identifiers en moest je feitelijk voor elke nieuwe omgeving opnieuw de pipelines nog even langs lopen. Bij een YAML-bestand kun je daarentegen selecteren om een bestaande YAML-definitie te gebruiken voor je nieuwe pipeline. Dat maakt het veel eenvoudiger om definities te delen.

Je kunt de YAML-definitie van een bestaande grafische pipeline eenvoudig inzien door binnen een "Agent job" phase de YAML weer te geven:

view-yaml-source

Release pipelines

Tot nu toe waren YAML-pipelines alleen beschikbaar voor build-pipelines. En hoewel build- en release-pipelines op hoofdlijnen veel dezelfde dingen konden, hadden build-pipelines al wel YAML-definities, en release-pipelines nod niet. De release-pipelines hadden met alle mogelijkheden om afhankelijkheden en goedkeuringen in te richten een belangrijke meerwaarde voor het release-proces, maar dus geen YAML.

Daar komt nu verandering in. Wanneer je naar je Azure DevOps portal gaat, de preview-feature "Multi-stage pipelines" aanzetten:

preview-multi-stage-pipelines

Wanneer je dat doet, verdwijnt het concept van een "build pipeline", en krijg je in plaats daarvan een "pipeline". Ook komt er een nieuwe sectie genaamd "environments" onder je Azure Pipelines beschikbaar:

build pipelines hernoemd naar pipelines

Het idee is dat je nu dus een pipeline kunt maken, en deze naar keuze kunt inzetten voor build (CI), release (CD), of zelfs een combinatie (CI/CD).

Je kunt alle details over deze Azure Pipelines-release vinden op https://devblogs.microsoft.com/devops/whats-new-with-azure-pipelines/.

Tijd om jouw release-proces te versnellen?

Wanneer je Azure DevOps wilt gaan inzetten voor je BI / Analytics-omgeving, kun je tegen redelijk wat uitdagingen en nieuwe zaken aanlopen. Bijvoorbeeld:

  • Azure Repos / Git
    • Hoe richt je je repositories goed in?
    • Hoeveel repositories heb je nodig?
    • Moet je werken met feature- en topic-branches, of is dat niet handig?
    • Wat zijn "pull requests"?
    • Hoe los je conflicten op, en voorkom je dat je mede-developers in paniek raken van de command-line?
  • Azure Pipelines
    • Werken alle producten out-of-the-box in Azure Pipelines voor build en release? (Hint: nee ;-))
    • Hoe pak je builds en releases aan met diverse producten

In de tweedaagse training "Azure DevOps voor BI & Data Platforms" gaan we hier uitgebreid op in:

  • Zelf opzetten en inrichten van Azure DevOps-omgevingen
  • Leren werken met Git
  • Inrichten van Git repositories
  • Opzetten en gebruiken van build- en release-pipelines

Zowel de on-premises stack (SQL Server, SSIS, SSAS) als de cloud stack (ASDB, ADF, etc.) komen aan bod.

Meer informatie? Check Azure DevOps voor BI & Data Platforms.