Impossibile determinare la pipeline che ha attivato una build
Sto usando la funzionalità di repository multipli di Azure DevOps, documentata qui:
Https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops
Ho il mio file YAML in un repository e la pipeline punta a quello YAML. Lo YAML ha un trigger impostato per un'altra risorsa del repository, in modo che quando quel repository viene aggiornato, la pipeline verrà attivata:
resources:
repositories:
- repository: MyRepo
endpoint: 'MyRepos'
type: git
name: RepoName
trigger:
- '*'
La documentazione afferma che la variabile "Build.SourceBranch" mi consentirà di determinare quale ramo in MyRepo ha attivato la creazione della pipeline: "Quando un aggiornamento a uno dei repository attiva una pipeline, le seguenti variabili vengono impostate in base all'attivazione del repository"
Tuttavia, questo non sembra essere il caso. Indipendentemente dal ramo che attiva la compilazione, "Build.SourceBranch" è sempre "refs / heads / master", presumibilmente perché il repository che contiene YAML ha "master" come ramo predefinito.
Non riesco nemmeno a trovare alcuna variabile di ambiente che venga impostata sul nome del ramo che ha attivato la compilazione. Quindi come posso ottenere il nome del ramo che ha attivato la compilazione? Se non è possibile, penso che questo debba essere aggiunto!
Risposte
Il problema è:
Secondo il documento, è impostato in base all'attivazione del Build.SourceBranch
repository. Tuttavia, il suo valore è determinato dal repo in cui risiede il file YAML.
Ho fatto i seguenti test. Sono disponibili due repo, "RepoA" e "RepoB". Entrambi i repository hanno due rami, "master" e "bran". E il file YAML è nel "master" di "RepoA"
Effettua una modifica in "bran" di "RepoB". Il valore di
Build.SourceBranch
èrefs/heads/master
. Non è coerente con la documentazione.Effettuare una modifica in "bran" di "RepoA". Il valore di
Build.SourceBranch
èrefs/heads/bran
. È coerente con la documentazione.Effettua una modifica in "master" di "RepoB". Il valore di
Build.SourceBranch
èrefs/heads/master
. È coerente con la documentazione.Effettua una modifica in "master" di "RepoA". Il valore di
Build.SourceBranch
èrefs/heads/master
. È coerente con la documentazione.
Pertanto, se la build viene attivata da "RepoA", Build.SourceBranch
può rappresentare con successo il vero ramo. Tuttavia, se la compilazione viene attivata da "RepoB", il valore di Build.SourceBranch
è sempre refs/heads/master
.
Abbiamo segnalato questo problema al gruppo di prodotti.