Exécuter des commandes Git dans un script

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Notes

Dans Microsoft Team Foundation Server (TFS) 2018 et les versions précédentes, les pipelines de build et de mise en production sont appelés définitions, les exécutions sont appelées builds, les connexions de service sont appelées points de terminaison de service, les phases sont appeléesenvironnements et les travaux sont appelés phases.

Pour certains workflows, 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 effectuée, l’équipe peut souhaiter fusionner la branche vers la branche principale.

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, vérifiez 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 avoir extrait votre code.

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Accorder des autorisations de contrôle de version au service de build

  1. Accédez à la page paramètres du projet de votre organisation dans lesprojetsgénéraux>des paramètres> de l’organisation.

    Sélectionnez les paramètres de votre organisation.

  2. Sélectionnez le projet à modifier.

    Sélectionnez votre projet.

  3. 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.

  4. Sélectionnez Sécurité pour modifier la sécurité de votre référentiel.

    Choisissez Sécurité pour modifier la sécurité de votre référentiel.

  5. Recherchez le service de génération de collection de projets. Choisissez le service de génération de regroupement de projets d’identité ({votre organisation}) ( et non les comptes de service de génération de regroupement de projets de groupe ({votre organisation})). Par défaut, cette identité peut lire à partir du dépôt, mais ne peut pas y renvoyer de modifications. Accordez les autorisations nécessaires pour les commandes Git que vous souhaitez exécuter. En règle générale, vous souhaiterez accorder les autorisations suivantes :

    • Créer une branche : Permettre
    • Contribuer: Permettre
    • Lire: Permettre
    • Créer une balise : Permettre

Accédez à l’onglet Panneau de configuration de version

  • Azure Repos :https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol
  • Local : https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol

gérer le projet

Si vous voyez cette page, sélectionnez le dépôt, puis sélectionnez le lien :

Panneau de configuration supérieur au projet

Onglet contrôle de version du projet du panneau de configuration

Sous l’onglet Contrôle de version , sélectionnez le référentiel dans lequel vous souhaitez exécuter des commandes Git, puis sélectionnez Project Collection Build Service. Par défaut, cette identité peut lire à partir du dépôt, mais ne peut pas y renvoyer de modifications.

Autorisations

Accordez les autorisations nécessaires pour les commandes Git que vous souhaitez exécuter. En règle générale, vous souhaiterez accorder les autorisations suivantes :

  • Créer une branche : Permettre
  • Contribuer: Permettre
  • Lire: Permettre
  • Créer une balise : Permettre

Lorsque vous avez terminé d’accorder les autorisations, veillez à sélectionner Enregistrer les modifications.

Autoriser les scripts à accéder au jeton système

Ajoutez une checkout section avec persistCredentials la valeur true.

steps:
- checkout: self
  persistCredentials: true

En savoir plus sur checkout.

Sous l’onglet Options, sélectionnez Autoriser les scripts à accéder au jeton OAuth.

Veillez à nettoyer le dépôt local

Certains types de modifications apportées au référentiel local ne sont pas automatiquement nettoyés par le pipeline de build. Veillez donc à :

  • Supprimez les branches locales que vous créez.
  • Annuler les modifications de configuration git.

Si vous rencontrez des problèmes à l’aide d’un agent local, vérifiez que le dépôt est propre :

Vérifiez que checkout la valeur est clean définie truesur .

steps:
- checkout: self
  clean: true

Exemples

Répertorier les fichiers dans votre dépôt

Sous l’onglet build , ajoutez cette tâche :

Tâche Arguments

Utilitaire : ligne de commande
Répertoriez les fichiers dans le référentiel Git.
Outil : git

Arguments : ls-files

Fusionner une branche de fonctionnalité vers la branche principale

Vous souhaitez qu’une build CI soit fusionnée vers principal 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 dépôt :

@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-le comme dernière tâche :

Tâche Arguments

Utilitaire : Script batch
Exécutez merge.bat.
Path (Chemin d’accès) : merge.bat

Questions fréquentes (FAQ)

Puis-je exécuter des commandes Git si mon dépôt distant se trouve dans GitHub ou un autre service Git tel que Bitbucket Cloud ?

Oui

Quelles tâches puis-je utiliser pour exécuter des commandes Git ?

Batch Script

Ligne de commande

PowerShell

Script d’interpréteur de commandes

Comment faire éviter de déclencher une build CI quand le script envoie (push) ?

Ajoutez-y ***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-y [skip ci] votre message de validation ou 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 des variantes ci-dessous. Cela est pris en charge pour les validations dans Azure Repos Git, Bitbucket Cloud, GitHub et GitHub Enterprise Server.

  • [skip ci] ou [ci skip]
  • skip-checks: true ou skip-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 version.

J’ai des problèmes. Comment puis-je les résoudre ?

Consultez Résoudre les problèmes de build et de mise en production.

Je ne peux pas sélectionner un pool d’agents par défaut et je ne peux pas mettre en file d’attente ma build ou ma mise en production. Comment la corriger ?

Consultez pools d’agents.

Ma tâche 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 NODE_EXTRA_CA_CERTS=file variable d’environnement à votre agent de build ou ajouter la variable de NODE.EXTRA.CA.CERTS=file tâche dans votre pipeline. Pour plus d’informations sur cette variable , consultezNode.js documentation . 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 en local 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 pas encore disponibles localement. Certaines fonctionnalités sont disponibles localement si vous avez effectué la mise à niveau vers la dernière version de TFS.