Comment bloquer les nommages de branches sur Azure DevOps
Publié le 27 mai 2024 - par Andy Cinquin
Azure DevOpsPipeline YAMLBranchesOrganisationConvention de nommageGestion de ProjetDéveloppement logicielMéthodologie Agile
Dans cet article, on va voir comment bloquer les nommages de branches sur Azure DevOps en utilisant une pipeline YAML. Le but est de s'assurer que les branches respectent une convention de nommage spécifique, ce qui permet de garder une organisation claire et cohérente dans notre projet.
Prérequis
Avant de commencer, assurons-nous d'avoir les éléments suivants :
- Un compte Azure DevOps
- Un projet Azure DevOps
- Des connaissances de base en YAML et en pipelines Azure DevOps
Mise en place
Voici comment j'ai fait pour mettre en place la validation du nommage des branches dans notre pipeline Azure DevOps.
1. Créer un fichier YAML
J'ai commencé par créer un nouveau fichier YAML dans notre projet Azure DevOps. Je l'ai nommé
branch-naming-validation.yml
, mais on peut choisir le nom qu'on veut.2. Définir le trigger et les branches
Dans le fichier YAML, j'ai défini le trigger et les branches pour lesquelles on veut appliquer la validation du nommage :
trigger:
- dev
- main
pr:
branches:
include:
- dev
- main
Ici, on a défini le trigger pour les branches
dev
et main
, ainsi que les pull requests ciblant ces branches.3. Configurer le pool d'agents
Ensuite, j'ai configuré le pool d'agents sur lequel la pipeline sera exécutée :
pool:
vmImage: ubuntu-latest
Dans cet exemple, on utilise une image Ubuntu comme agent.
4. Ajouter les étapes de validation
Maintenant, voici comment j'ai ajouté les étapes pour valider le nommage des branches :
steps:
- bash: |
echo "BUILD_SOURCEBRANCH: $BUILD_SOURCEBRANCH"
echo "SYSTEM_PULLREQUEST_SOURCEBRANCH: $SYSTEM_PULLREQUEST_SOURCEBRANCH"
if [[ "$BUILD_SOURCEBRANCH" =~ ^refs/pull/[0-9]+/merge$ ]]; then
echo "Pull request detected. Extracting source branch name..."
branch=$(echo "$SYSTEM_PULLREQUEST_SOURCEBRANCH" | sed 's/^refs\/heads\///')
else
echo "Regular branch detected. Extracting branch name..."
branch=$(echo "$BUILD_SOURCEBRANCH" | sed 's/^refs\/heads\///')
fi
echo "Extracted branch name: $branch"
echo "Checking if branch name matches the allowed patterns..."
if [[ "$branch" =~ ^(main|dev|[a-zA-Z0-9]+/#[0-9]+-(.*))$ ]]; then
echo "Valid branch name: $branch"
else
echo "Invalid branch name: $branch"
echo "Branch name does not match the allowed patterns."
echo "Allowed patterns:"
echo " - main"
echo " - dev"
echo " - [folder]/[#ticketnumber]-[*]"
exit 1
fi
displayName: 'Branch name validation'
Cette étape utilise un script Bash pour extraire le nom de la branche à partir des variables d'environnement
BUILD_SOURCEBRANCH
et SYSTEM_PULLREQUEST_SOURCEBRANCH
. Ensuite, on vérifie si le nom de la branche correspond aux modèles autorisés en utilisant une expression régulière.Les modèles autorisés qu'on a définis sont :
main
dev
[folder]/[#ticketnumber]-[*]
Si le nom de la branche ne correspond pas à l'un de ces modèles, la pipeline échouera avec un message d'erreur indiquant les modèles autorisés.
5. Ajouter des étapes supplémentaires (facultatif)
J'ai également ajouté d'autres étapes à notre pipeline pour effectuer des tâches supplémentaires, comme l'installation de Node.js, l'exécution de tests, la vérification de Prettier, le linting et la construction de l'application :
- task: NodeTool@0
inputs:
versionSpec: '20.x'
displayName: 'Install Node.js'
- script: |
npm install --legacy-peer-deps
displayName: 'npm install'
- script: |
npm run prettier:check
displayName: 'Run Prettier check'
- script: |
npm run lint
displayName: 'Run linting'
- script: |
npm run build
displayName: 'Build the application'
Ces étapes sont spécifiques à notre projet Node.js, mais on peut les adapter en fonction des besoins de notre projet.
Conclusion
Voilà comment j'ai mis en place une pipeline Azure DevOps qui valide le nommage des branches et s'assure qu'elles respectent notre convention de nommage spécifique. Cela nous aide à maintenir une organisation claire et cohérente dans notre projet, facilitant ainsi la collaboration et la gestion des branches.
N'oublions pas d'adapter les modèles de nommage des branches en fonction des conventions de notre équipe ou de notre entreprise. On peut également ajouter des étapes supplémentaires à la pipeline pour répondre aux besoins spécifiques de notre projet.
En implémentant cette validation de nommage des branches dans notre pipeline Azure DevOps, on peut automatiser l'application des conventions de nommage et maintenir une structure de branches propre et organisée.
En vous remerciant de votre visite, n'hésitez pas à me
contacter pour toute demande de renseignements, devis ou
proposition de collaboration. Je me ferai un plaisir de
vous répondre dans les plus brefs délais.
Vous avez aimé cet article ? N'hésitez pas à le partager !