Cet article se destine particulièrement à ceux qui utilisent Azure Devops ou ont pour projet son utilisation.
Dans ce billet je vais expliquer rapidement les différentes briques dont nous allons avoir besoin sur Azure Devops pour pouvoir publier des modules avec Nuget. Si vous avez raté l’article précédent je vous conseille fortement de le lire avant de revenir ici. On y aborde un sujet important: bien organiser ses dossiers de module.
⚠️ Les descriptions sont les miennes, avec mes mots. Elles sont très certainement incomplètes voire techniquement bof, mais j’estime que ça sera suffisant pour les néophytes comme moi.
Car oui, je débute dans Azure Devops !
Les outils Azure Devops
Azure Repos
Les “repositories” ou dépôts sauce Microsoft ! Très similaire à Github, on peut tout à fait garder ses habitudes de commandes GIT d’ailleurs car c’est la même techno. Je ne vais pas m’attarder dessus plus que ça, c’est l’élément le plus simple.
Azure Pipelines
Les pipelines sont le pendant des workflow chez Github, pour ceux qui connaissent. Pour les autres, les pipelines c’est une machine conteneurisée qui va exécuter les tâches que vous lui donnez, dans l’ordre indiqué. On peut s’en servir pour tout un tas de chose, la majorité du temps ça conciste à automatiser la partie “build” de son dev, à savoir la compilation.
Toutes ces actions/tâches, ont une syntaxe particulière et sont rédigées au format YAML dans un fichier: azure-pipelines.yml
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Maven@4
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.11'
jdkArchitectureOption: 'x64'
publishJUnitResults: false
testResultsFiles: '**/surefire-reports/TEST-*.xml'
goals: 'package'
# Exemple tiré de https://learn.microsoft.com/en-us/azure/devops/pipelines/customize-pipeline?view=azure-devops
Décrivons le plus important:
- trigger: c’est la/les branche(s) du dépôt Azure Devops surveillée. Dès qu’elle est modifiée par un push, le pipeline se déclenche. Par défaut: main ou master
- pool: c’est la plateforme utilisée pour votre build. Je vous conseille fortement le “ubuntu-latest”, bien plus rapide avec du Powershell qu’un windows-latest (paradoxal n’est-ce pas ?).
- steps: contient les différentes tâches à faire par le pipeline
Il est possible d’organiser, scinder l’exécution des tâches en plusieurs grandes étapes:
- Stages: Contient des grandes étapes, qui contiennent elles-mêmes des jobs
- Jobs: Contient des jobs, un job = un nouvel environnement de build
- Steps: Contient les task, les “actions” concrètes
La documentation de Microsoft à ce sujet est vraiment complète, néanmoins le formatage YAML est capricieux, je vous conseille l’utilisation de Visual Studio ou Visual Studio Code avec le module YAML.
Azure Artifacts
Cet outil vous permet de créer des flux, des “feeds” ou simplement ce qu’on peut appeler en Powershell des “providers”. C’est une plateforme d’échange de paquets de plusieurs types possibles: Nuget, Npm, Python… La documentation est encore une fois complète.
Azure Feeds
Partie intégrante de Artifact, un feed est un “flux” sur lequel vous allez publier vos paquets Nuget, Npm, etc. Dans le cas du projet global de modules powershell, le feed sera le PSRepository auquel se connecter.
Dans le prochain billet nous verrons les scripts à mettre en place ainsi que le contenu du fichier azure-pipelines.yml que j’ai rédigé permettant toute l’automatisation de build et de publication Nuget.