Numeri di esecuzione e compilazione

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

Questo articolo illustra come vengono costruiti i numeri di compilazione e i numeri di esecuzione di Azure Pipelines e come personalizzarli nelle pipeline.

Il numero di esecuzione viene usato per identificare un'esecuzione specifica di una pipeline o di una compilazione. Il numero di build è sinonimo del numero di esecuzione.

Se non si specifica un nome di compilazione nelle pipeline YAML o si lascia vuoto il campo Nome nelle pipeline classiche, l'esecuzione ottiene un numero intero univoco come nome. È possibile assegnare alle esecuzioni nomi più utili significativi per il team. È possibile usare una combinazione di token, variabili e caratteri di sottolineatura nei nomi di compilazione.

Nelle pipeline YAML la proprietà del nome di compilazione viene chiamata name e deve essere a livello radice di una pipeline. Gli elementi specificati a livello radice di un file YAML sono proprietà della pipeline .

Nota

La name proprietà non funziona nei file modello.

Il codice di esempio seguente restituisce un numero di build personalizzato, ad esempio project_def_master_202408281.

name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:r)

steps:
  - script: echo '$(Build.BuildNumber)'

Numero esecuzione

Il valore predefinito per un numero di esecuzione in Azure Pipelines è $(Date:yyyyMMdd).$(Rev:r). $(Rev:r) è un formato di variabile speciale che funziona solo nel campo numero di compilazione. Al termine di una compilazione, se non altro nel numero di build modificato, il Rev valore intero aumenta di uno.

$(Rev:r) viene reimpostato su 1 quando viene modificata qualsiasi altra parte del numero di build. Ad esempio, se si configura il formato del numero di build come $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r), il numero di build viene reimpostato quando cambia la data.

Se il numero di build precedente è MyBuild_20230621.1, il numero di build successivo di quel giorno è MyBuild_20230621.2. Il primo numero di build il giorno successivo è MyBuild_20230622.1.

$(Rev:r) reimposta 1 anche su se si modifica il numero di build per indicare una modifica della versione. Ad esempio, se il formato di compilazione è 1.0.$(Rev:r) e l'ultimo numero di build è 1.0.3, se si modifica il numero di build in 1.1.$(Rev:r), il numero di build successivo è 1.1.1.

Esempio

Considerare i dati seguenti per un'esecuzione di compilazione:

  • Nome progetto: Fabrikam
  • Nome della pipeline: CIBuild
  • Branch: main
  • ID di compilazione/ID esecuzione: 752
  • Data: 6 maggio 2024
  • Ora: 9:07:03 PM
  • Un'esecuzione completata prima di oggi.

Se si specifica il formato del numero di build seguente, la seconda esecuzione il 6 maggio 2024 è denominata Fabrikam_CIBuild_main_20240506.2.

$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)

OAuth

Nella tabella seguente viene illustrato il modo in cui ogni token viene risolto, in base all'esempio precedente. È possibile usare questi token solo per definire i numeri di esecuzione. Non funzionano altrove in una pipeline.

Token Valore di esempio Note
$(Build.DefinitionName) CIBuild Il nome della pipeline non può contenere caratteri non validi o spazi vuoti.
$(Build.BuildId) 752 $(Build.BuildId) è un ID interno non modificabile, detto anche ID di esecuzione, univoco nell'organizzazione di Azure DevOps.
$(DayOfMonth) 6
$(DayOfYear) 126
$(Hours) 21
$(Minutes) 7
$(Month) 5
$(Rev:r) 2 La terza esecuzione giornaliera è 3e così via. Usare $(Rev:r) per assicurarsi che ogni compilazione completata abbia un nome univoco.
$(Date:yyyyMMdd) 20240506 È possibile specificare altri formati di data, $(Date:MMddyy)ad esempio .
$(Seconds) 3
$(SourceBranchName) main
$(TeamProject) Fabrikam
$(Year:yy) 24
$(Year:yyyy) 2024

Importante

Se si desidera visualizzare gli zeri di prefisso nel numero di esecuzione, è possibile aggiungere altri r caratteri al Rev token. Ad esempio, specificare se si vuole che $(Rev:rr) il Rev numero inizi con 01, 02e così via.

Se si usa un riempimento Rev zero come parte di uno schema di numerazione delle versioni, tenere presente che alcune attività della pipeline o strumenti più diffusi, ad esempio i pacchetti NuGet, rimuovere gli zeri iniziali. Questo comportamento causa una mancata corrispondenza del numero di versione negli artefatti prodotti.

Espressioni

Se si usa un'espressione per impostare il numero di build, non è possibile usare alcuni token, perché i relativi valori non vengono impostati al momento della valutazione delle espressioni. Questi token includono $(Build.BuildId), $(Build.BuildURL)e $(Build.BuildNumber).

Variabili

È possibile usare variabili definite dall'utente e predefinite nel numero di build. Ad esempio, se si definisce My.Variable, è possibile specificare il formato numerico seguente:

$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)

Nell'esempio precedente le prime quattro variabili sono predefinite. Per informazioni su come definire le variabili utente, vedere Impostare le variabili nelle pipeline.

Domande frequenti

Quanto può essere grande un numero di esecuzione e quali caratteri è possibile usare?

I numeri di esecuzione possono contenere fino a 255 caratteri. Non è possibile usare i caratteri ", /, :, <, >, ', |@?o *e non è possibile terminare il numero con ..

In quale fuso orario sono espressi i valori di ora del numero di build?

Il fuso orario è UTC.

Il fuso orario è uguale al fuso orario del sistema operativo del computer che esegue il server del livello applicazione.

Come è possibile impostare il numero di build in modo dinamico con le condizioni?

È possibile usare le variabili come parte del numero di esecuzione. Nell'esempio seguente la variabile why viene usata come parte del numero di esecuzione e il relativo valore cambia a seconda di Build.Reason.

variables:
  - name: why
    ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
      value: pr
    ${{ elseif eq(variables['Build.Reason'], 'Manual' ) }}:
      value: manual
    ${{ elseif eq(variables['Build.Reason'], 'IndividualCI' ) }}:
      value: indivci
    ${{ else }}:
      value: other

name: $(TeamProject)_$(SourceBranchName)_$(why)_$(Date:yyyyMMdd).$(Rev:r)

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: echo '$(Build.BuildNumber)'

Come è possibile fare riferimento alla variabile numero di esecuzione all'interno di uno script?

È possibile definire una nuova variabile che include il numero di esecuzione oppure chiamare direttamente il numero di esecuzione. Nell'esempio seguente è $(MyRunNumber) una nuova variabile che include il numero di esecuzione. È possibile chiamare la variabile numero di esecuzione usando MyRunNumber o $(Build.BuildNumber).

# Set MyRunNumber
variables: 
  MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'

steps:
- script: echo $(MyRunNumber)
- script: echo $(Build.BuildNumber)

Definire le variabili