Exécuter des commandes Git dans un script
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Pour certains flux de travail, vous avez besoin de votre pipeline de build pour exécuter des commandes Git. Par exemple, une fois qu’une build CI sur une branche de fonctionnalité est terminée, l’équipe peut souhaiter fusionner la branche dans l’élément principal.
Git est disponible sur les agents hébergés par Microsoft et sur les agents locaux.
Activer les scripts pour exécuter des commandes Git
Notes
Avant de commencer, assurez-vous que l’identité par défaut de votre compte est définie avec le code suivant. Cette opération doit être effectuée en tant que première étape après l’extraction de votre code.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Accorder des autorisations de gestion de version au service de build
Accédez à la page des paramètres de projet pour votre organisation dans Paramètres de l’organisation>Général>Projets.
Sélectionnez le projet à modifier.
Dans Paramètres du projet, sélectionnez Référentiels. Sélectionnez le référentiel sur lequel vous souhaitez exécuter des commandes Git.
Sélectionnez Sécurité pour modifier la sécurité de votre référentiel.
Cherchez Service de build de collection de projets. Choisissez l’identité {{nom de votre projet}} Build Service ({votre organisation}) (et non le groupe Project Collection Build Service Accounts ({votre organisation})). Par défaut, cette identité peut lire à partir du référentiel, mais ne peut pas lui renvoyer (push) de modifications. Accordez les autorisations nécessaires pour les commandes Git que vous souhaitez exécuter. En règle générale, vous devriez octroyer :
- Créer une branche : Autoriser
- Contribuer : Autoriser
- Lire : Autoriser
- Créer une balise : Autoriser
Accédez à l’onglet du panneau de configuration Gestion de version
Azure Repos :
https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol
Localement :
https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol
Si cette page s’affiche, sélectionnez le référentiel, puis sélectionnez le lien :
Sous l’onglet Gestion de version, sélectionnez le référentiel dans lequel vous souhaitez exécuter des commandes Git, puis sélectionnez Service de build de collection de projets. Par défaut, cette identité peut lire à partir du référentiel, mais ne peut pas lui renvoyer (push) de modifications.
Accordez les autorisations nécessaires pour les commandes Git que vous souhaitez exécuter. En règle générale, vous devriez octroyer :
- Créer une branche : Autoriser
- Contribuer : Autoriser
- Lire : Autoriser
- Créer une balise : Autoriser
Lorsque vous avez terminé d’accorder les autorisations, veillez à sélectionner Enregistrer les modifications.
Autoriser les scripts à accéder au jeton système
Sous l’onglet Options, sélectionnez Autoriser les scripts à accéder au jeton OAuth.
Veillez à propre le référentiel local
Certains types de modifications apportées au référentiel local ne sont pas automatiquement nettoyés par le pipeline de build. Assurez-vous donc de :
- Supprimer les branches locales que vous créez.
- Annuler les modifications de configuration git.
Si vous rencontrez des problèmes en utilisant un agent local, assurez-vous que le référentiel est nettoyé :
Sous l’onglet Référentiel, définissez Nettoyer sur true.
Sous l’onglet Variables, créez ou modifiez la variable
Build.Clean
et définissez-la sursource
Exemples
Répertorier les fichiers de votre référentiel
Dans l’onglet Générer, ajoutez la tâche suivante :
Tâche | Arguments |
---|---|
Utilitaire : Ligne de commande Répertoriez les fichiers dans le dépôt Git. |
Outil : git Arguments : ls-files |
Fusionner une branche de fonctionnalité vers la branche primaire
Vous souhaitez qu’une build CI soit fusionnée avec la primaire si la build réussit.
Sous l’onglet Déclencheurs, sélectionnez Intégration continue (CI) et incluez les branches que vous souhaitez générer.
Créez merge.bat
à la racine de votre référentiel :
@echo off
ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
IF %BUILD_SOURCEBRANCH% == refs/heads/main (
ECHO Building main branch so no merge is needed.
EXIT
)
SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
ECHO GIT CHECKOUT MAIN
git checkout main
ECHO GIT STATUS
git status
ECHO GIT MERGE
git merge %sourceBranch% -m "Merge to main"
ECHO GIT STATUS
git status
ECHO GIT PUSH
git push origin
ECHO GIT STATUS
git status
Sous l’onglet build, ajoutez ceci comme dernière tâche :
Tâche | Arguments |
---|---|
Utilitaire : Script de commandes par lot Exécutez merge.bat. |
Path (Chemin d’accès) : merge.bat |
Questions fréquentes (FAQ)
Puis-je exécuter des commandes Git si mon référentiel distant se trouve dans GitHub ou un autre service Git tel que Bitbucket Cloud ?
Yes
Quelles tâches puis-je utiliser pour exécuter des commandes Git ?
Script d'interpréteur de commandes
Comment éviter de déclencher une build CI lorsque le script envoie (push) ?
Ajoutez ***NO_CI***
à votre message de validation. Voici quelques exemples :
git commit -m "This is a commit message ***NO_CI***"
git merge origin/features/hello-world -m "Merge to main ***NO_CI***"
Ajoutez [skip ci]
à votre message de validation ou à votre description. Voici quelques exemples :
git commit -m "This is a commit message [skip ci]"
git merge origin/features/hello-world -m "Merge to main [skip ci]"
Vous pouvez également utiliser l’une de ces variantes pour les validations sur Azure Repos Git, Bitbucket Cloud, GitHub et GitHub Enterprise Server.
[skip ci]
ou[ci skip]
skip-checks: true
ouskip-checks:true
[skip azurepipelines]
ou[azurepipelines skip]
[skip azpipelines]
ou[azpipelines skip]
[skip azp]
ou[azp skip]
***NO_CI***
Ai-je besoin d’un agent ?
Vous avez besoin d’au moins un agent pour exécuter votre build ou mise en production.
Je fais face à des problèmes. Comment puis-je les résoudre ?
Consultez Résoudre les problèmes liés à la création et à la mise en production.
Je ne peux pas sélectionner un pool d’agents par défaut et je ne peux pas mettre ma build ou ma mise en production en attente. Comment la corriger ?
Consultez les Pools d’agents.
Ma tâche envoi (push) NuGet échoue avec l’erreur suivante : « Erreur : impossible d’obtenir le certificat émetteur local ». Comment puis-je résoudre ce problème ?
Cela peut être résolu en ajoutant un certificat racine approuvé. Vous pouvez ajouter la variable d’environnement NODE_EXTRA_CA_CERTS=file
à votre agent de build ou ajouter la variable de tâche NODE.EXTRA.CA.CERTS=file
dans votre pipeline. Pour plus d’informations sur cette variable, consultez la documentation Node.js. Consultez Définir des variables dans un pipeline pour obtenir des instructions sur la définition d’une variable dans votre pipeline.
J’utilise TFS localement et je ne vois pas certaines de ces fonctionnalités. Pourquoi cela ne fonctionne-t-il pas ?
Certaines de ces fonctionnalités sont disponibles uniquement sur Azure Pipelines et ne sont pas encore disponibles localement. Certaines fonctionnalités sont disponibles localement si vous avez effectué une mise à niveau vers la dernière version de TFS.