Variabili di artefatti e della versione classica

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

Le variabili di rilascio e artefatti classici sono un modo pratico per scambiare e trasportare i dati in tutta la pipeline. Ogni variabile viene archiviata come stringa e il relativo valore può cambiare tra le esecuzioni della pipeline.

Le variabili sono diverse dai parametri di runtime disponibili solo in fase di analisi dei modelli.

Durante la composizione delle attività per la distribuzione dell'applicazione in ogni fase dei processi CI/CD devOps, le variabili consentono di:

  • Definire una pipeline di distribuzione più generica una sola volta e quindi personalizzarla facilmente per ogni fase. Ad esempio, una variabile può essere usata per rappresentare il stringa di connessione per la distribuzione Web e il valore di questa variabile può essere modificato da una fase a un'altra. Si tratta di variabili personalizzate.

  • Usare informazioni sul contesto della versione, della fase, degli artefatti o dell'agente specifico in cui viene eseguita la pipeline di distribuzione. Ad esempio, lo script potrebbe dover accedere al percorso della compilazione per scaricarlo o alla directory di lavoro dell'agente per creare file temporanei. Si tratta di variabili predefinite.

Nota

Per le pipeline YAML, vedere Variabili definite dall'utente e variabili predefinite per altri dettagli.

Variabili predefinite

Le informazioni sul contesto di esecuzione vengono rese disponibili per l'esecuzione delle attività tramite variabili predefinite. Le attività e gli script possono usare queste variabili per trovare informazioni sul sistema, il rilascio, la fase o l'agente in cui sono in esecuzione. Ad eccezione di System.Debug, queste variabili sono di sola lettura e i relativi valori vengono impostati automaticamente dal sistema. Alcune delle variabili più significative sono descritte nelle tabelle seguenti. Per visualizzare l'elenco completo, vedere Visualizzare i valori correnti di tutte le variabili.

Suggerimento

È possibile visualizzare i valori correnti di tutte le variabili per una versione e usare una variabile predefinita per eseguire una versione in modalità di debug.

Sistema

Nome variabile Descrizione
System.TeamFoundationServerUri URL della connessione al servizio in Azure Pipelines. Usare questo comando dagli script o dalle attività per chiamare le API REST di Azure Pipelines.

Esempio: https://fabrikam.vsrm.visualstudio.com/
System.TeamFoundationCollectionUri URL della raccolta Team Foundation o di Azure Pipelines. Usarlo dagli script o dalle attività per chiamare le API REST in altri servizi, ad esempio build e controllo della versione.

Esempio: https://dev.azure.com/fabrikam/
System.CollectionId ID della raccolta a cui appartiene la build o la versione.

Esempio: 6c6f3423-1c84-4625-995a-f7f143a1e43d
System.DefinitionId ID della pipeline di versione a cui appartiene la versione corrente.

Esempio: 1
System.TeamProject Nome del progetto a cui appartiene la compilazione o la versione.

Esempio: Fabrikam
System.TeamProjectId ID del progetto a cui appartiene la compilazione o la versione.

Esempio: 79f5c12e-3337-4151-be41-a268d2c73344
System.ArtifactsDirectory Directory in cui vengono scaricati gli artefatti durante la distribuzione di una versione. La directory viene cancellata prima di ogni distribuzione se è necessario scaricare elementi nell'agente. Uguale a Agent.ReleaseDirectory e System.DefaultWorkingDirectory.

Esempio: C:\agent\_work\r1\a
System.DefaultWorkingDirectory Directory in cui vengono scaricati gli artefatti durante la distribuzione di una versione. La directory viene cancellata prima di ogni distribuzione se è necessario scaricare elementi nell'agente. Uguale a Agent.ReleaseDirectory e System.ArtifactsDirectory.

Esempio: C:\agent\_work\r1\a
System.WorkFolder Directory di lavoro per questo agente, in cui vengono create sottocartelle per ogni build o versione. Uguale a Agent.RootDirectory e Agent.WorkFolder.

Esempio: C:\agent\_work
System.Debug Si tratta dell'unica variabile di sistema che può essere impostata dagli utenti. Impostare su true per eseguire la versione in modalità di debug per facilitare la ricerca degli errori.

Esempio: true

Versione

Nome variabile Descrizione
Release.AttemptNumber Numero di volte in cui questa versione viene distribuita in questa fase.

Esempio: 1
Release.DefinitionEnvironmentId ID della fase nella pipeline di versione corrispondente.

Esempio: 1
Release.DefinitionId ID della pipeline di versione a cui appartiene la versione corrente.

Esempio: 1
Release.DefinitionName Nome della pipeline di versione a cui appartiene la versione corrente.

Esempio: fabrikam-cd
Release.Deployment.RequestedFor Nome visualizzato dell'identità che ha attivato (avviato) la distribuzione attualmente in corso.

Esempio: Mateo Escobedo
Release.Deployment.RequestedForEmail Indirizzo di posta elettronica dell'identità che ha attivato (avviato) la distribuzione attualmente in corso.

Esempio: mateo@fabrikam.com
Release.Deployment.RequestedForId ID dell'identità che ha attivato (avviato) la distribuzione attualmente in corso.

Esempio: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.DeploymentID ID della distribuzione. Univoco per processo.

Esempio: 254
Release.DeployPhaseID ID della fase in cui è in esecuzione la distribuzione.

Esempio: 127
Release.EnvironmentId ID dell'istanza di fase in una versione in cui è in corso la distribuzione.

Esempio: 276
Release.EnvironmentName Nome della fase in cui è in corso la distribuzione.

Esempio: Dev
Release.EnvironmentUri URI dell'istanza di fase in una versione in cui è in corso la distribuzione.

Esempio: vstfs://ReleaseManagement/Environment/276
Release.Environments. {stage-name}.status Stato della distribuzione della fase.

Esempio: InProgress
Release.PrimaryArtifactSourceAlias Alias dell'origine dell'artefatto primario

Esempio: fabrikam\_web
Release.Reason Motivo della distribuzione. I valori supportati sono:
ContinuousIntegration - la versione avviata nella distribuzione continua dopo il completamento di una compilazione.
Manual : la versione è stata avviata manualmente.
None - Il motivo della distribuzione non è stato specificato.
Schedule - la versione avviata da una pianificazione.
Release.ReleaseDescription Descrizione del testo fornita al momento del rilascio.

Esempio: Critical security patch
Release.ReleaseId Identificatore del record di versione corrente.

Esempio: 118
Release.ReleaseName Nome della versione corrente.

Esempio: Release-47
Release.ReleaseUri URI della versione corrente.

Esempio: vstfs://ReleaseManagement/Release/118
Release.ReleaseWebURL URL per questa versione.

Esempio: https://dev.azure.com/fabrikam/f3325c6c/_release?releaseId=392&_a=release-summary
Release.RequestedFor Nome visualizzato dell'identità che ha attivato la versione.

Esempio: Mateo Escobedo
Release.RequestedForEmail Indirizzo di posta elettronica dell'identità che ha attivato il rilascio.

Esempio: mateo@fabrikam.com
Release.RequestedForId ID dell'identità che ha attivato il rilascio.

Esempio: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.SkipArtifactsDownload Valore booleano che specifica se ignorare o meno il download degli artefatti nell'agente.

Esempio: FALSE
Release.TriggeringArtifact.Alias Alias dell'artefatto che ha attivato la versione. Questa operazione è vuota quando la versione è stata pianificata o attivata manualmente.

Esempio: fabrikam\_app

Fase di rilascio

Nome variabile Descrizione
Release.Environments. {nome fase}. Stato Stato della distribuzione di questa versione all'interno di una fase specificata.

Esempio: NotStarted

Agente

Nome variabile Descrizione
Agent.Name Nome dell'agente registrato con il pool di agenti. È probabile che sia diverso dal nome del computer.

Esempio: fabrikam-agent
Agent.MachineName Nome del computer in cui è configurato l'agente.

Esempio: fabrikam-agent
Agent.Version Versione del software dell'agente.

Esempio: 2.109.1
Agent.JobName Nome del processo in esecuzione, ad esempio Release o Build.

Esempio: Release
Agent.HomeDirectory Cartella in cui è installato l'agente. Questa cartella contiene il codice e le risorse per l'agente.

Esempio: C:\agent
Agent.ReleaseDirectory Directory in cui vengono scaricati gli artefatti durante la distribuzione di una versione. La directory viene cancellata prima di ogni distribuzione se è necessario scaricare elementi nell'agente. Uguale a System.ArtifactsDirectory e System.DefaultWorkingDirectory.

Esempio: C:\agent\_work\r1\a
Agent.RootDirectory Directory di lavoro per questo agente, in cui vengono create sottocartelle per ogni build o versione. Uguale a Agent.WorkFolder e System.WorkFolder.

Esempio: C:\agent\_work
Agent.WorkFolder Directory di lavoro per questo agente, in cui vengono create sottocartelle per ogni build o versione. Uguale a Agent.RootDirectory e System.WorkFolder.

Esempio: C:\agent\_work
Agent.DeploymentGroupId ID del gruppo di distribuzione in cui è registrato l'agente. Questa opzione è disponibile solo nei processi del gruppo di distribuzione.

Esempio: 1

Artefatto generale

Per ogni artefatto a cui viene fatto riferimento in una versione, è possibile usare le variabili di artefatto seguenti. Non tutte le variabili sono significative per ogni tipo di artefatto. La tabella seguente elenca le variabili di artefatto predefinite e fornisce esempi dei valori che hanno a seconda del tipo di artefatto. Se un esempio è vuoto, implica che la variabile non viene popolata per tale tipo di artefatto.

Sostituire il {alias} segnaposto con il valore specificato per l'alias dell'artefatto o con il valore predefinito generato per la pipeline di versione.

Nome variabile Descrizione
Release.Artifacts. {alias}. DefinitionId Identificatore della pipeline di compilazione o del repository.

Esempio di Azure Pipelines: 1
Esempio di GitHub: fabrikam/asp
Release.Artifacts. {alias}. DefinitionName Nome della pipeline di compilazione o del repository.

Esempio di Azure Pipelines: fabrikam-ci
Esempio di controllo della versione di Team Foundation: $/fabrikam
Esempio Git: fabrikam
Esempio di GitHub: fabrikam/asp (main)
Release.Artifacts. {alias}. Buildnumber Numero di build o identificatore del commit.

Esempio di Azure Pipelines: 20170112.1
Esempio di Jenkins/TeamCity: 20170112.1
Esempio di controllo della versione di Team Foundation: Changeset 3
Esempio Git: 38629c964
Esempio di GitHub: 38629c964
Release.Artifacts. {alias}. BuildId Identificatore di compilazione.

Esempio di Azure Pipelines: 130
Esempio di Jenkins/TeamCity: 130
Esempio di GitHub: 38629c964d21fe405ef830b7d0220966b82c9e11
Release.Artifacts. {alias}. Builduri URL della compilazione.

Esempio di Azure Pipelines: vstfs://build-release/Build/130
Esempio di GitHub: https://github.com/fabrikam/asp
Release.Artifacts. {alias}. SourceBranch Percorso completo e nome del ramo da cui è stata compilata l'origine.

Esempio di Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. SourceBranchName Nome solo del ramo da cui è stata compilata l'origine.

Esempio di Azure Pipelines: main
Release.Artifacts. {alias}. Sourceversion Commit compilato.

Esempio di Azure Pipelines: bc0044458ba1d9298cdc649cb5dcf013180706f7
Release.Artifacts. {alias}. Repository.Provider Tipo di repository da cui è stata compilata l'origine.

Esempio di Azure Pipelines: Git
Release.Artifacts. {alias}. RequestedForID Identificatore dell'account che ha attivato la compilazione.

Esempio di Azure Pipelines: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.Artifacts. {alias}. RequestedFor Nome dell'account che ha richiesto la compilazione.

Esempio di Azure Pipelines: Mateo Escobedo
Release.Artifacts. {alias}. Digitare Tipo di origine dell'artefatto, ad esempio Build.

Esempio di Azure Pipelines: Build
Esempio di Jenkins: Jenkins
Esempio di TeamCity: TeamCity
Esempio di controllo della versione di Team Foundation: TFVC
Esempio Git: Git
Esempio di GitHub: GitHub
Release.Artifacts. {alias}. PullRequest.TargetBranch Percorso completo e nome del ramo che rappresenta la destinazione di una richiesta pull. Questa variabile viene inizializzata solo se la versione viene attivata da un flusso di richiesta pull.

Esempio di Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. PullRequest.TargetBranchName Nome solo del ramo che è la destinazione di una richiesta pull. Questa variabile viene inizializzata solo se la versione viene attivata da un flusso di richiesta pull.

Esempio di Azure Pipelines: main

Vedere anche Alias origine artefatto

Artefatto primario

Si designa uno degli artefatti come artefatto primario in una pipeline di versione. Per l'artefatto primario designato, Azure Pipelines popola le variabili seguenti.

Nome variabile Uguale a
Build.DefinitionId Release.Artifacts. {Alias artefatto primario}. DefinitionId
Build.DefinitionName Release.Artifacts. {Alias artefatto primario}. DefinitionName
Build.BuildNumber Release.Artifacts. {Alias artefatto primario}. Buildnumber
Build.BuildId Release.Artifacts. {Alias artefatto primario}. BuildId
Build.BuildURI Release.Artifacts. {Alias artefatto primario}. Builduri
Build.SourceBranch Release.Artifacts. {Alias artefatto primario}. SourceBranch
Build.SourceBranchName Release.Artifacts. {Alias artefatto primario}. SourceBranchName
Build.SourceVersion Release.Artifacts. {Alias artefatto primario}. Sourceversion
Build.Repository.Provider Release.Artifacts. {Alias artefatto primario}. Repository.Provider
Build.RequestedForID Release.Artifacts. {Alias artefatto primario}. RequestedForID
Build.RequestedFor Release.Artifacts. {Alias artefatto primario}. RequestedFor
Build.Type Release.Artifacts. {Alias artefatto primario}. Digitare
Build.PullRequest.TargetBranch Release.Artifacts. {Alias artefatto primario}. PullRequest.TargetBranch
Build.PullRequest.TargetBranchName Release.Artifacts. {Alias artefatto primario}. PullRequest.TargetBranchName

Usare le variabili predefinite

È possibile usare le variabili predefinite in due modi: come parametri per le attività in una pipeline di versione o negli script.

È possibile usare direttamente una variabile predefinita come input per un'attività. Ad esempio, per passare Release.Artifacts.{Artifact alias}.DefinitionName per l'origine dell'artefatto il cui alias è ASPNET4.CI a un'attività, usare $(Release.Artifacts.ASPNET4.CI.DefinitionName).

Uso delle variabili di artefatto negli argomenti di un'attività Script di PowerShell

Per usare una variabile predefinita nello script, è necessario innanzitutto sostituire nei . nomi delle variabili predefinite con _. Ad esempio, per stampare il valore della variabile Release.Artifacts.{Artifact alias}.DefinitionName di artefatto per l'origine dell'artefatto il cui alias è ASPNET4.CI in uno script di PowerShell, usare $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME.

Uso delle variabili di artefatto in uno script di PowerShell inline

Si noti che il nome originale dell'alias di origine dell'artefatto, ASPNET4.CI, viene sostituito da ASPNET4_CI.

Visualizzare i valori correnti di tutte le variabili

  1. Aprire la visualizzazione pipeline del riepilogo per la versione e scegliere la fase a cui si è interessati. Nell'elenco dei passaggi scegliere Inizializza processo.

    Apertura del log per una versione

  2. Verrà aperto il log per questo passaggio. Scorrere verso il basso per visualizzare i valori usati dall'agente per questo processo.

    Visualizzazione dei valori delle variabili in una versione

Eseguire una versione in modalità di debug

Mostra informazioni aggiuntive durante l'esecuzione di una versione e nei file di log eseguendo l'intera versione o solo le attività in una singola fase di rilascio, in modalità di debug. Ciò consente di risolvere i problemi e gli errori.

  • Per avviare la modalità di debug per un'intera versione, aggiungere una variabile denominata System.Debug con il valore true alla scheda Variabili di una pipeline di versione.

  • Per avviare la modalità di debug per una singola fase, aprire la finestra di dialogo Configura fase dal menu di scelta rapida della fase e aggiungere una variabile denominata System.Debug con il valore true alla scheda Variabili .

  • In alternativa, creare un gruppo di variabili contenente una variabile denominata System.Debug con il valore true e collegare questo gruppo di variabili a una pipeline di versione.

Suggerimento

Se viene visualizzato un errore correlato a una connessione al servizio Azure RM, vedere Procedura: Risolvere i problemi relativi alle connessioni al servizio Azure Resource Manager.

Variabili personalizzate

Le variabili personalizzate possono essere definite in vari ambiti.

  • Condividere i valori tra tutte le definizioni in un progetto usando gruppi di variabili. Scegliere un gruppo di variabili quando è necessario usare gli stessi valori in tutte le definizioni, le fasi e le attività in un progetto e si vuole essere in grado di modificare i valori in un'unica posizione. I gruppi di variabili vengono definiti e gestiti nella scheda Libreria .

  • Condividere i valori in tutte le fasi usando le variabili della pipeline di versione. Scegliere una variabile della pipeline di versione quando è necessario usare lo stesso valore in tutte le fasi e le attività nella pipeline di versione e si vuole essere in grado di modificare il valore in un'unica posizione. Queste variabili vengono definite e gestite nella scheda Variabili di una pipeline di versione. Nella pagina Variabili pipeline aprire l'elenco a discesa Ambito e selezionare "Release". Per impostazione predefinita, quando si aggiunge una variabile, viene impostata su Ambito versione.

  • Condividere i valori in tutte le attività all'interno di una fase specifica usando le variabili di fase. Usare una variabile a livello di fase per i valori che variano da fase a fase (e sono uguali per tutte le attività in una fase). Queste variabili vengono definite e gestite nella scheda Variabili di una pipeline di versione. Nella pagina Variabili pipeline aprire l'elenco a discesa Ambito e selezionare la fase richiesta. Quando si aggiunge una variabile, impostare Ambito sull'ambiente appropriato.

L'uso di variabili personalizzate nel progetto, nella pipeline di versione e nell'ambito della fase consente di:

  • Evitare la duplicazione dei valori, semplificando l'aggiornamento di tutte le occorrenze come un'unica operazione.

  • Archiviare i valori sensibili in modo che non possano essere visualizzati o modificati dagli utenti delle pipeline di versione. Designare una proprietà di configurazione come variabile sicura (segreta) selezionando l'icona Lucchetto (lucchetto) accanto alla variabile.

    Importante

    I valori delle variabili nascoste (segrete) vengono archiviati in modo sicuro nel server e non possono essere visualizzati dagli utenti dopo il salvataggio. Durante una distribuzione, il servizio di versione di Azure Pipelines decrittografa questi valori quando si fa riferimento alle attività e li passa all'agente tramite un canale HTTPS sicuro.

Nota

La creazione di variabili personalizzate può sovrascrivere le variabili standard. Ad esempio, la variabile di ambiente Percorso di PowerShell. Se si crea una variabile personalizzata Path in un agente Windows, la $env:Path variabile verrà sovrascritta e PowerShell non sarà in grado di eseguire.

Usare variabili personalizzate

Per usare variabili personalizzate nelle attività di compilazione e rilascio, racchiudere semplicemente il nome della variabile tra parentesi e precederlo con un $ carattere. Ad esempio, se si dispone di una variabile denominata adminUserName, è possibile inserire il valore corrente di tale variabile in un parametro di un'attività come $(adminUserName).

Nota

Le variabili in gruppi diversi collegati a una pipeline nello stesso ambito (ad esempio, processo o fase) si scontrano e il risultato può essere imprevedibile. Assicurarsi di usare nomi diversi per le variabili in tutti i gruppi di variabili.

Definire e modificare le variabili in uno script

Per definire o modificare una variabile da uno script, usare il task.setvariable comando di registrazione. Si noti che il valore della variabile aggiornato ha come ambito il processo in esecuzione e non scorre tra processi o fasi. I nomi delle variabili vengono trasformati in maiuscolo e i caratteri "." e " " vengono sostituiti da "_".

Ad esempio, Agent.WorkFolder diventa AGENT_WORKFOLDER. In Windows, è possibile accedervi come %AGENT_WORKFOLDER% o $env:AGENT_WORKFOLDER. In Linux e macOS si usa $AGENT_WORKFOLDER.

Suggerimento

È possibile eseguire uno script in un:

Script batch

Impostare le sauce variabili e secret.Sauce

@echo ##vso[task.setvariable variable=sauce]crushed tomatoes
@echo ##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic

Leggere le variabili

Argomenti

"$(sauce)" "$(secret.Sauce)"

Script

@echo off
set sauceArgument=%~1
set secretSauceArgument=%~2
@echo No problem reading %sauceArgument% or %SAUCE%
@echo But I cannot read %SECRET_SAUCE%
@echo But I can read %secretSauceArgument% (but the log is redacted so I do not spoil
     the secret)

Output della console dalla lettura delle variabili:

No problem reading crushed tomatoes or crushed tomatoes
But I cannot read 
But I can read ******** (but the log is redacted so I do not spoil the secret)