Impossible de déterminer le pipeline qui a déclenché une compilation
J'utilise la fonctionnalité de référentiel multiple d'Azure DevOps, documentée ici:
Https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops
J'ai mon fichier YAML dans un référentiel et le pipeline pointe vers ce YAML. Le YAML a un déclencheur configuré pour une autre ressource de référentiel, de sorte que lorsque ce dépôt est mis à jour, le pipeline sera déclenché:
resources:
repositories:
- repository: MyRepo
endpoint: 'MyRepos'
type: git
name: RepoName
trigger:
- '*'
La documentation affirme que la variable 'Build.SourceBranch' me permettra de déterminer quelle branche de MyRepo a déclenché la construction du pipeline: "Lorsqu'une mise à jour de l'un des référentiels déclenche un pipeline, les variables suivantes sont définies en fonction du déclenchement du référentiel"
Cependant, cela ne semble pas être le cas. Quelle que soit la branche qui déclenche la construction, 'Build.SourceBranch' est toujours 'refs / heads / master', probablement parce que le dépôt qui contient le YAML a 'master' comme branche par défaut.
Je ne trouve pas non plus de variable d'environnement définie sur le nom de la branche qui a déclenché la construction. Alors, comment puis-je obtenir le nom de la branche qui a déclenché la construction? S'il n'y a pas de moyen possible, je pense que cela doit être ajouté!
Réponses
Le problème est:
Selon le document, Build.SourceBranchest défini en fonction du référentiel de déclenchement. Cependant, sa valeur est déterminée par le dépôt dans lequel réside le fichier YAML en pratique.
J'ai fait les tests suivants. Il existe deux dépôts, «RepoA» et «RepoB». Les deux dépôts ont deux branches, «master» et «son». Et le fichier YAML est dans 'master' de 'RepoA'
Commit un changement de «son» de «RepoB». La valeur de
Build.SourceBranchestrefs/heads/master. Ce n'est pas conforme à la documentation.Commit un changement de «son» de «RepoA». La valeur de
Build.SourceBranchestrefs/heads/bran. Il est conforme à la documentation.Validez un changement dans «maître» de «RepoB». La valeur de
Build.SourceBranchestrefs/heads/master. Il est conforme à la documentation.Validez un changement dans «maître» de «RepoA». La valeur de
Build.SourceBranchestrefs/heads/master. Il est conforme à la documentation.
Ainsi, si la construction est déclenchée par «RepoA», Build.SourceBranchpeut représenter avec succès la vraie branche. Cependant, si la génération est déclenchée par «RepoB», la valeur de Build.SourceBranchsont toujours refs/heads/master.
Nous avons signalé ce problème au groupe de produits.