Impossibile determinare la pipeline che ha attivato una build

Aug 24 2020

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

1 JaneMa-MSFT Aug 24 2020 at 15:47

Il problema è:

Secondo il documento, è impostato in base all'attivazione del Build.SourceBranchrepository. 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"

  1. Effettua una modifica in "bran" di "RepoB". Il valore di Build.SourceBranchè refs/heads/master. Non è coerente con la documentazione.

  2. Effettuare una modifica in "bran" di "RepoA". Il valore di Build.SourceBranchè refs/heads/bran. È coerente con la documentazione.

  3. Effettua una modifica in "master" di "RepoB". Il valore di Build.SourceBranchè refs/heads/master. È coerente con la documentazione.

  4. 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.SourceBranchpuò 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.