Variables de versión clásica y artefactos
Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015
Nota
En Microsoft Team Foundation Server (TFS) 2018 y versiones anteriores, las canalizaciones de compilación y versión se denominan definiciones, las ejecuciones se denominan compilaciones, las conexiones de servicio se denominan puntos de conexión de servicio, las fases se denominan entornos y los trabajos se denominan fases.
Las variables clásicas de versión y artefactos son una manera cómoda de intercambiar y transportar datos a lo largo de la canalización. Cada variable se almacena como una cadena y su valor puede cambiar entre las ejecuciones de la canalización.
Las variables son diferentes de los parámetros en tiempo de ejecución que solo están disponibles en el momento del análisis de plantillas.
Nota
Este es un artículo de referencia que trata las variables de versión clásica y artefactos. Para comprender las variables de las canalizaciones de YAML, consulte variables definidas por el usuario. Al migrar de una canalización de versión a una canalización de YAML, las Release.* variables no se rellenarán.
A medida que crea las tareas para implementar la aplicación en cada fase de los procesos de CI/CD de DevOps, las variables le ayudarán a:
Defina una canalización de implementación más genérica una vez y personalízala fácilmente para cada fase. Por ejemplo, se puede usar una variable para representar la cadena de conexión para la implementación web y el valor de esta variable se puede cambiar de una fase a otra. Se trata de variables personalizadas.
Use información sobre el contexto de la versión,la fase , los artefactos o el agente concretosen los que se ejecuta la canalización de implementación. Por ejemplo, el script puede necesitar acceso a la ubicación de la compilación para descargarla o al directorio de trabajo del agente para crear archivos temporales. Estas son las variables predeterminadas.
Sugerencia
Puede ver los valores actuales de todas las variables de una versión y usar una variable predeterminada para ejecutar una versión en modo de depuración.
Variables predeterminadas
La información sobre el contexto de ejecución está disponible para las tareas en ejecución a través de variables predeterminadas. Las tareas y los scripts pueden usar estas variables para buscar información sobre el sistema, la versión, la fase o el agente en los que se ejecutan. A excepción de System.Debug,estas variables son de solo lectura y el sistema establece automáticamente sus valores. Algunas de las variables más importantes se describen en las tablas siguientes. Para ver la lista completa, vea Ver los valores actuales de todas las variables.
Sistema
| Nombre de la variable | Descripción |
|---|---|
| System.TeamFoundationServerUri | Dirección URL de la conexión de servicio en TFS o Azure Pipelines. Úselo desde los scripts o las tareas para llamar a Azure Pipelines API REST. Ejemplo: https://fabrikam.vsrm.visualstudio.com/ |
| System.TeamFoundationCollectionUri | Dirección URL de la colección de Team Foundation o Azure Pipelines. Úselo desde los scripts o las tareas para llamar a las API REST en otros servicios, como Build y Control de versiones. Ejemplo: https://dev.azure.com/fabrikam/ |
| System.CollectionId | Identificador de la colección a la que pertenece esta compilación o versión. No disponible en TFS 2015. Ejemplo: 6c6f3423-1c84-4625-995a-f7f143a1e43d |
| System.DefinitionId | Identificador de la canalización de versión a la que pertenece la versión actual. No disponible en TFS 2015. Ejemplo: 1 |
| System.TeamProject | Nombre del proyecto al que pertenece esta compilación o versión. Ejemplo: Fabrikam |
| System.TeamProjectId | Identificador del proyecto al que pertenece esta compilación o versión. No disponible en TFS 2015. Ejemplo: 79f5c12e-3337-4151-be41-a268d2c73344 |
| System.ArtifactsDirectory | Directorio en el que se descargan los artefactos durante la implementación de una versión. El directorio se borra antes de cada implementación si requiere que los artefactos se descarguen en el agente. Igual que Agent.ReleaseDirectory y System.DefaultWorkingDirectory. Ejemplo: C:\agent\_work\r1\a |
| System.DefaultWorkingDirectory | Directorio en el que se descargan los artefactos durante la implementación de una versión. El directorio se borra antes de cada implementación si requiere que los artefactos se descarguen en el agente. Igual que Agent.ReleaseDirectory y System.ArtifactsDirectory. Ejemplo: C:\agent\_work\r1\a |
| System.WorkFolder | Directorio de trabajo para este agente, donde se crean subcarpetas para cada compilación o versión. Igual que Agent.RootDirectory y Agent.WorkFolder. Ejemplo: C:\agent\_work |
| System.Debug | Esta es la única variable del sistema que pueden establecer los usuarios. Establezca esta opción en true para ejecutar la versión en modo de depuración para ayudar en la búsqueda de errores. Ejemplo: true |
Release
| Nombre de la variable | Descripción |
|---|---|
| Release.AttemptNumber | Número de veces que se implementa esta versión en esta fase. No disponible en TFS 2015. Ejemplo: 1 |
| Release.DefinitionEnvironmentId | Identificador de la fase de la canalización de versión correspondiente. No disponible en TFS 2015. Ejemplo: 1 |
| Release.DefinitionId | Identificador de la canalización de versión a la que pertenece la versión actual. No disponible en TFS 2015. Ejemplo: 1 |
| Release.DefinitionName | Nombre de la canalización de versión a la que pertenece la versión actual. Ejemplo: fabrikam-cd |
| Release.Deployment.RequestedFor | Nombre para mostrar de la identidad que desencadenó (inició) la implementación actualmente en curso. No disponible en TFS 2015. Ejemplo: Mateo Escobedo |
| Release.Deployment.RequestedForEmail | Dirección de correo electrónico de la identidad que desencadenó (inició) la implementación actualmente en curso. No disponible en TFS 2015. Ejemplo: mateo@fabrikam.com |
| Release.Deployment.RequestedForId | Identificador de la identidad que desencadenó (inició) la implementación actualmente en curso. No disponible en TFS 2015. Ejemplo: 2f435d07-769f-4e46-849d-10d1ab9ba6ab |
| Release.DeploymentID | Identificador de la implementación. Único por trabajo. Ejemplo: 254 |
| Release.DeployPhaseID | Identificador de la fase en la que se ejecuta la implementación. Ejemplo: 127 |
| Release.EnvironmentId | Identificador de la instancia de fase en una versión en la que la implementación está actualmente en curso. Ejemplo: 276 |
| Release.EnvironmentName | Nombre de la fase en la que la implementación está actualmente en curso. Ejemplo: Dev |
| Release.EnvironmentUri | Uri de la instancia de fase en una versión en la que la implementación está actualmente en curso. Ejemplo: vstfs://ReleaseManagement/Environment/276 |
| Release.Environments. {stage-name}.status | Estado de implementación de la fase. Ejemplo: InProgress |
| Release.PrimaryArtifactSourceAlias | Alias del origen del artefacto principal Ejemplo: fabrikam\_web |
| Release.Reason | El motivo de la implementación. Los valores admitidos son:ContinuousIntegration : la versión se inició en Implementación continua una vez completada una compilación.Manual : la versión se inició manualmente.None : no se ha especificado el motivo de la implementación.Scheduled : la versión se inició a partir de una programación. |
| Release.ReleaseDescription | Descripción del texto proporcionada en el momento de la versión. Ejemplo: Critical security patch |
| Release.ReleaseId | Identificador del registro de versión actual. Ejemplo: 118 |
| Release.ReleaseName | Nombre de la versión actual. Ejemplo: Release-47 |
| Release.ReleaseUri | Uri de la versión actual. Ejemplo: vstfs://ReleaseManagement/Release/118 |
| Release.ReleaseWebURL | Dirección URL de esta versión. Ejemplo: https://dev.azure.com/fabrikam/f3325c6c/_release?releaseId=392&_a=release-summary |
| Release.RequestedFor | Nombre para mostrar de la identidad que desencadenó la versión. Ejemplo: Mateo Escobedo |
| Release.RequestedForEmail | Dirección de correo electrónico de identidad que desencadenó la versión. Ejemplo: mateo@fabrikam.com |
| Release.RequestedForId | Identificador de identidad que desencadenó la versión. Ejemplo: 2f435d07-769f-4e46-849d-10d1ab9ba6ab |
| Release.SkipArtifactsDownload | Valor booleano que especifica si se debe omitir o no la descarga de artefactos en el agente. Ejemplo: FALSE |
| Release.TriggeringArtifact.Alias | Alias del artefacto que desencadenó la versión. Esto está vacío cuando la versión se programó o desencadenó manualmente. Ejemplo: fabrikam\_app |
Fase de versión
| Nombre de la variable | Descripción |
|---|---|
| Release.Environments. {nombre de fase}. Estado | El estado de implementación de esta versión dentro de una fase especificada. No disponible en TFS 2015. Ejemplo: NotStarted |
Agente
| Nombre de la variable | Descripción |
|---|---|
| Agent.Name | Nombre del agente registrado con el grupo de agentes. Es probable que sea diferente del nombre del equipo. Ejemplo: fabrikam-agent |
| Agent.MachineName | Nombre del equipo en el que está configurado el agente. Ejemplo: fabrikam-agent |
| Agent.Version | Versión del software del agente. Ejemplo: 2.109.1 |
| Agent.JobName | Nombre del trabajo que se está ejecutando, como Versión o Compilación. Ejemplo: Release |
| Agent.HomeDirectory | Carpeta donde está instalado el agente. Esta carpeta contiene el código y los recursos del agente. Ejemplo: C:\agent |
| Agent.ReleaseDirectory | Directorio en el que se descargan los artefactos durante la implementación de una versión. El directorio se borra antes de cada implementación si requiere que los artefactos se descarguen en el agente. Igual que System.ArtifactsDirectory y System.DefaultWorkingDirectory. Ejemplo: C:\agent\_work\r1\a |
| Agent.RootDirectory | Directorio de trabajo para este agente, donde se crean subcarpetas para cada compilación o versión. Igual que Agent.WorkFolder y System.WorkFolder. Ejemplo: C:\agent\_work |
| Agent.WorkFolder | Directorio de trabajo para este agente, donde se crean subcarpetas para cada compilación o versión. Igual que Agent.RootDirectory y System.WorkFolder. Ejemplo: C:\agent\_work |
| Agent.DeploymentGroupId | Identificador del grupo de implementación con el que está registrado el agente. Esto solo está disponible en los trabajos del grupo de implementación. No disponible en TFS 2018 Update 1. Ejemplo: 1 |
Artefacto general
Para cada artefacto al que se hace referencia en una versión, puede usar las siguientes variables de artefacto. No todas las variables son significativas para cada tipo de artefacto. En la tabla siguiente se enumeran las variables de artefacto predeterminadas y se proporcionan ejemplos de los valores que tienen en función del tipo de artefacto. Si un ejemplo está vacío, implica que la variable no se rellena para ese tipo de artefacto.
Reemplace el {alias} marcador de posición por el valor especificado para el alias del {alias} o por el valor predeterminado generado para la canalización de versión.
| Nombre de la variable | Descripción |
|---|---|
| Lanzamiento. Artifacts. {alias}. DefinitionId | Identificador de la canalización o repositorio de compilación. Azure Pipelines ejemplo: 1GitHub ejemplo: fabrikam/asp |
| Lanzamiento. Artifacts. {alias}. DefinitionName | Nombre de la canalización o repositorio de compilación. Azure Pipelines ejemplo: fabrikam-ciEjemplo de TFVC: $/fabrikamEjemplo de Git: fabrikamGitHub ejemplo: fabrikam/asp (main) |
| Lanzamiento. Artifacts. {alias}. BuildNumber | Número de compilación o identificador de confirmación. Azure Pipelines ejemplo: 20170112.1Ejemplo de Jenkins/TeamCity: 20170112.1Ejemplo de TFVC: Changeset 3Ejemplo de Git: 38629c964GitHub ejemplo: 38629c964 |
| Lanzamiento. Artifacts. {alias}. BuildId | Identificador de compilación. Azure Pipelines ejemplo: 130Ejemplo de Jenkins/TeamCity: 130GitHub ejemplo: 38629c964d21fe405ef830b7d0220966b82c9e11 |
| Lanzamiento. Artifacts. {alias}. BuildURI | Dirección URL de la compilación. Azure Pipelines ejemplo: vstfs://build-release/Build/130GitHub ejemplo: https://github.com/fabrikam/asp |
| Lanzamiento. Artifacts. {alias}. SourceBranch | Ruta de acceso completa y nombre de la rama desde la que se creó el origen. Azure Pipelines ejemplo: refs/heads/main |
| Lanzamiento. Artifacts. {alias}. SourceBranchName | Nombre solo de la rama a partir de la que se creó el origen. Azure Pipelines ejemplo: main |
| Lanzamiento. Artifacts. {alias}. SourceVersion | Confirmación que se ha creado. Azure Pipelines ejemplo: bc0044458ba1d9298cdc649cb5dcf013180706f7 |
| Lanzamiento. Artifacts. {alias}. Repository.Provider | Tipo de repositorio desde el que se creó el origen. Azure Pipelines ejemplo: Git |
| Lanzamiento. Artifacts. {alias}. RequestedForID | Identificador de la cuenta que desencadenó la compilación. Azure Pipelines ejemplo: 2f435d07-769f-4e46-849d-10d1ab9ba6ab |
| Lanzamiento. Artifacts. {alias}. RequestedFor | Nombre de la cuenta que solicitó la compilación. Azure Pipelines ejemplo: Mateo Escobedo |
| Lanzamiento. Artifacts. {alias}. Tipo | Tipo de origen del artefacto, como Build. Azure Pipelines ejemplo: BuildEjemplo de Jenkins: JenkinsEjemplo de TeamCity: TeamCityEjemplo de TFVC: TFVCEjemplo de Git: GitGitHub ejemplo: GitHub |
| Lanzamiento. Artifacts. {alias}. PullRequest.TargetBranch | Ruta de acceso completa y nombre de la rama que es el destino de una solicitud de extracción. Esta variable solo se inicializa si un flujo de solicitud de extracción desencadena la versión. Azure Pipelines ejemplo: refs/heads/main |
| Lanzamiento. Artifacts. {alias}. PullRequest.TargetBranchName | El nombre solo de la rama que es el destino de una solicitud de extracción. Esta variable solo se inicializa si un flujo de solicitud de extracción desencadena la versión. Azure Pipelines ejemplo: main |
Consulte también Alias de origen de artefacto.
Artefacto principal
Uno de los artefactos se designa como artefacto principal en una canalización de versión. Para el artefacto principal designado, Azure Pipelines rellena las variables siguientes.
| Nombre de la variable | Igual que |
|---|---|
| Build.DefinitionId | Lanzamiento. Artifacts. {Alias de artefacto principal}. DefinitionId |
| Build.DefinitionName | Lanzamiento. Artifacts. {Alias de artefacto principal}. DefinitionName |
| Build.BuildNumber | Lanzamiento. Artifacts. {Alias de artefacto principal}. BuildNumber |
| Build.BuildId | Lanzamiento. Artifacts. {Alias de artefacto principal}. BuildId |
| Build.BuildURI | Lanzamiento. Artifacts. {Alias de artefacto principal}. BuildURI |
| Build.SourceBranch | Lanzamiento. Artifacts. {Alias de artefacto principal}. SourceBranch |
| Build.SourceBranchName | Lanzamiento. Artifacts. {Alias de artefacto principal}. SourceBranchName |
| Build.SourceVersion | Lanzamiento. Artifacts. {Alias de artefacto principal}. SourceVersion |
| Build.Repository.Provider | Lanzamiento. Artifacts. {Alias de artefacto principal}. Repository.Provider |
| Build.RequestedForID | Lanzamiento. Artifacts. {Alias de artefacto principal}. RequestedForID |
| Build.RequestedFor | Lanzamiento. Artifacts. {Alias de artefacto principal}. RequestedFor |
| Build.Type | Lanzamiento. Artifacts. {Alias de artefacto principal}. Tipo |
| Build.PullRequest.TargetBranch | Lanzamiento. Artifacts. {Alias de artefacto principal}. PullRequest.TargetBranch |
| Build.PullRequest.TargetBranchName | Lanzamiento. Artifacts. {Alias de artefacto principal}. PullRequest.TargetBranchName |
Uso de variables predeterminadas
Puede usar las variables predeterminadas de dos maneras: como parámetros para las tareas en una canalización de versión o en los scripts.
Puede usar directamente una variable predeterminada como entrada para una tarea.
Por ejemplo, para pasar para el origen del artefacto Release.Artifacts.{Artifact alias}.DefinitionName cuyo alias Release.Artifacts.{Artifact alias}.DefinitionName a una tarea, usaría $(Release.Artifacts.ASPNET4.CI.DefinitionName) .

Para usar una variable predeterminada en el script, primero debe reemplazar en los . nombres de variable predeterminados por _ .
Por ejemplo, para imprimir el valor de la variable de artefacto para el origen del artefacto cuyo alias ASPNET4.CI en un Release.Artifacts.{Artifact alias}.DefinitionName script de PowerShell, Release.Artifacts.{Artifact alias}.DefinitionName usaría $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME .

Tenga en cuenta que el nombre original del alias de origen del artefacto, ASPNET4.CI , se reemplaza por ASPNET4_CI .
Ver los valores actuales de todas las variables
Abra la vista de canalizaciones del resumen de la versión y elija la fase que le interesa. En la lista de pasos, elija Inicializar trabajo.

Se abrirá el registro de este paso. Desplácese hacia abajo para ver los valores usados por el agente para este trabajo.

Ejecución de una versión en modo de depuración
Muestre información adicional a medida que se ejecuta una versión y en los archivos de registro mediante la ejecución de toda la versión, o simplemente las tareas de una fase de versión individual, en modo de depuración. Esto puede ayudarle a resolver problemas y errores.
Para iniciar el modo de depuración de una versión completa, agregue una variable denominada con el valor a la
System.Debugpestaña Variables de una canalización detrueversión.System.DebugPara iniciar el modo de depuración de una sola fase, abra el cuadro de diálogo Configurar fase en el menú contextual de la fase y agregue una variable denominada con el valor a la pestaña
truetrueComo alternativa, cree un grupo de variables que contenga una variable denominada con el valor y vincule este grupo de variables a una canalización de
trueversión.
Sugerencia
Si recibe un error relacionado con una conexión de servicio de Azure RM, consulte Solución de problemas Azure Resource Manager conexiones de servicio.
Variables personalizadas
Las variables personalizadas se pueden definir en varios ámbitos.
Comparta valores entre todas las definiciones de un proyecto mediante grupos de variables. Elija un grupo de variables cuando necesite usar los mismos valores en todas las definiciones, fases y tareas de un proyecto, y quiera poder cambiar los valores en un único lugar. Los grupos de variables se definen y administran en la pestaña Biblioteca.
Comparta valores en todas las fases mediante variables de canalización de versión. Elija una variable de canalización de versión cuando necesite usar el mismo valor en todas las fases y tareas de la canalización de versión y desee poder cambiar el valor en un solo lugar. Estas variables se definen y administran en la pestaña Variables de una canalización de versión. En la página Variables de canalización, abra la lista desplegable Ámbito y seleccione "Versión". De forma predeterminada, cuando se agrega una variable, se establece en Ámbito de versión.
Comparta valores entre todas las tareas dentro de una fase específica mediante variables de fase. Use una variable de nivel de fase para valores que varían de una fase a otra (y son iguales para todas las tareas de una fase). Estas variables se definen y administran en la pestaña Variables de una canalización de versión. En la página Variables de canalización, abra la lista desplegable Ámbito y seleccione la fase necesaria. Al agregar una variable, establezca ámbito en el entorno adecuado.
El uso de variables personalizadas en el proyecto, la canalización de versión y el ámbito de fase le ayuda a:
Evite la duplicación de valores, lo que facilita la actualización de todas las repeticiones como una operación.
Almacene valores confidenciales de forma que los usuarios de las canalizaciones de versión no puedan verlos ni cambiarse. Designe una propiedad de configuración para que sea una variable segura (secreta) seleccionando el icono
(candado) junto a la variable.Importante
Los valores de las variables ocultas (secreto) se almacenan de forma segura en el servidor y los usuarios no pueden verlos después de guardarse. Durante una implementación, el Azure Pipelines de versión de seguridad descifra estos valores cuando las tareas hacen referencia a ellos y los pasa al agente a través de un canal HTTPS seguro.
Nota
La creación de variables personalizadas puede sobrescribir las variables estándar. Por ejemplo, la variable de entorno Ruta de acceso de PowerShell. Si crea una variable personalizada en un agente Windows, sobrescribirá la variable y PowerShell no podrá Path$env:Path ejecutarse.
Uso de variables personalizadas
Para usar variables personalizadas en las tareas de compilación y versión, basta con incluir el nombre de la variable entre paréntesis y precederlo por un $ carácter. Por ejemplo, si tiene una variable denominada adminUserName, puede insertar el valor actual de esa variable en un parámetro de una tarea como .
Nota
Las variables de grupos diferentes que están vinculados a una canalización en el mismo ámbito (por ejemplo, trabajo o fase) colisionarán y el resultado puede ser impredecible. Asegúrese de usar nombres diferentes para las variables en todos los grupos de variables.
Definición y modificación de las variables en un script
Para definir o modificar una variable a partir de un script, use el task.setvariable comando de registro.
Tenga en cuenta que el valor de la variable actualizada tiene como ámbito el trabajo que se ejecuta y no fluye entre trabajos o fases.
Los nombres de variable se transforman en mayúsculas y los caracteres "." y " " se reemplazan por "_".
Por ejemplo, Agent.WorkFolder se convierte en AGENT_WORKFOLDER.
En Windows, se accede a este como %AGENT_WORKFOLDER% o $env:AGENT_WORKFOLDER .
En Linux y macOS, se usa $AGENT_WORKFOLDER .
Sugerencia
Puede ejecutar un script en:
- Windows agente mediante una tarea de script de Batch o una tarea de script de PowerShell.
- Agente de macOSo Linux mediante una tarea de script de Shell.
Script por lotes
Establecer las 
secret.Sauce variables y
@echo ##vso[task.setvariable variable=sauce]crushed tomatoes
@echo ##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic
Lectura de las variables
Argumentos
"$(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)
Salida de la consola al leer las variables:
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)
Establecer las
Establecer las