Ejecución y compilación de números
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
En este artículo se explica cómo se construyen los números de compilación y los números de ejecución de Azure Pipelines y cómo se pueden personalizar en las canalizaciones.
El número de ejecución se usa para identificar una ejecución específica de una canalización o compilación. El número de compilación es sinónimo del número de ejecución.
Si no especifica un nombre de compilación en canalizaciones YAML o deja el campo Nombre en blanco en canalizaciones clásicas, la ejecución obtiene un entero único como su nombre. Puede asignar nombres más útiles a las ejecuciones que sean significativas para su equipo. Puede usar una combinación de tokens, variables y caracteres de subrayado en nombres de compilación.
En las canalizaciones YAML, se llama a name
la propiedad nombre de compilación y debe estar en el nivel raíz de una canalización. Los elementos especificados en el nivel raíz de un archivo YAML son propiedades de canalización.
Nota:
La propiedad name
no funciona en archivos de plantilla.
El código de ejemplo siguiente genera un número de compilación personalizado como project_def_master_20240828.1.
name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)
steps:
- script: echo '$(Build.BuildNumber)'
Número de ejecución
El valor predeterminado de un número de ejecución en Azure Pipelines es $(Date:yyyyMMdd).$(Rev:r)
. $(Rev:r)
es un formato de variable especial que solo funciona en el campo número de compilación. Cuando se completa una compilación, si no cambia nada más en el número de compilación, el Rev
valor entero aumenta en uno.
$(Rev:r)
se restablece a 1
cuando cambia cualquier otra parte del número de compilación. Por ejemplo, si configura el formato de número de compilación como $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r)
, el número de compilación se restablece cuando cambia la fecha.
Si el número de compilación anterior era MyBuild_20230621.1
, el siguiente número de compilación ese día es MyBuild_20230621.2
. El primer número de compilación del día siguiente es MyBuild_20230622.1
.
$(Rev:r)
también se restablece a 1
si cambia el número de compilación para indicar un cambio de versión. Por ejemplo, si el formato de compilación es 1.0.$(Rev:r)
y el último número de compilación era 1.0.3
, si cambia el número de compilación a 1.1.$(Rev:r)
, el siguiente número de compilación es 1.1.1
.
Ejemplo
Tenga en cuenta los siguientes datos para una ejecución de compilación:
- Nombre del proyecto: Fabrikam
- Nombre de la canalización: CIBuild
- Rama: principal.
- Id. de compilación/Id. de ejecución: 752
- Fecha: 6 de mayo de 2024
- Hora: 9:07:03 p. m.
- Una ejecución completada anteriormente hoy.
Si especifica el siguiente formato de número de compilación, la segunda ejecución del 6 de mayo de 2024 se denomina Fabrikam_CIBuild_main_20240506.2.
$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)
Tokens
En la tabla siguiente se muestra cómo se resuelve cada token, en función del ejemplo anterior. Estos tokens solo se pueden usar para definir números de ejecución. No funcionan en ningún otro lugar de una canalización.
Token | Valor de ejemplo | Notas |
---|---|---|
$(Build.DefinitionName) |
CIBuild | El nombre de la canalización no puede contener caracteres de espacio en blanco o no válidos. |
$(Build.BuildId) |
752 | $(Build.BuildId) es un identificador interno inmutable, también denominado Identificador de ejecución, que es único en toda la organización de Azure DevOps. |
$(DayOfMonth) |
6 | |
$(DayOfYear) |
126 | |
$(Hours) |
21 | |
$(Minutes) |
7 | |
$(Month) |
5 | |
$(Rev:r) |
2 | La tercera ejecución diaria es 3 , etc. Use $(Rev:r) para asegurarse de que cada compilación completada tiene un nombre único. |
$(Date:yyyyMMdd) |
20240506 | Puede especificar otros formatos de fecha, como $(Date:MMddyy) . |
$(Seconds) |
3 | |
$(SourceBranchName) |
main (principal) | |
$(TeamProject) |
Fabrikam | |
$(Year:yy) |
24 | |
$(Year:yyyy) |
2024 |
Importante
Si desea mostrar ceros de prefijo en el número de ejecución, puede agregar más r
caracteres al Rev
token. Por ejemplo, especifique $(Rev:rr)
si desea que el Rev
número comience por 01
, 02
, etc.
Si usa un relleno cero Rev
como parte de un esquema de numeración de versiones, tenga en cuenta que algunas tareas de canalización o herramientas populares, como paquetes NuGet, quiten los ceros iniciales. Este comportamiento provoca una falta de coincidencia de número de versión en los artefactos que se generan.
Expresiones
Si usa una expresión para establecer el número de compilación, no puede usar algunos tokens, ya que sus valores no se establecen en el momento en que se evalúan las expresiones. Estos tokens incluyen $(Build.BuildId)
, $(Build.BuildURL)
y $(Build.BuildNumber)
.
Variables
Puede usar variables definidas por el usuario y predefinidas en el número de compilación. Por ejemplo, si define My.Variable
, puede especificar el siguiente formato de número:
$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)
En el ejemplo anterior, las cuatro primeras variables están predefinidas. Para obtener información sobre cómo definir variables de usuario, consulte Establecimiento de variables en canalizaciones.
Preguntas más frecuentes
¿Qué tamaño puede tener un número de ejecución y qué caracteres puedo usar?
Los números de ejecución pueden tener hasta 255 caracteres. No se pueden usar los caracteres "
, , :
'
|
<
/
?
@
>
o *
, y no se puede finalizar el número con ..
¿En qué zona horaria se expresan los valores de tiempo del número de compilación?
La zona horaria es UTC.
La zona horaria es la misma que la zona horaria del sistema operativo de la máquina que ejecuta el servidor de nivel de aplicación.
¿Cómo puedo establecer el número de compilación de manera dinámica con condiciones?
Puede usar variables como parte del número de ejecución. En el ejemplo siguiente, la variable why
se usa como parte del número de ejecución y su valor cambia en función de 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)'
¿Cómo puedo hacer referencia a la variable de número de ejecución dentro de un script?
Puede definir una nueva variable que incluya el número de ejecución o llamar directamente al número de ejecución. En el ejemplo siguiente, $(MyRunNumber)
es una nueva variable que incluye el número de ejecución. Puede llamar a la variable de número de ejecución mediante MyRunNumber
o $(Build.BuildNumber)
.
# Set MyRunNumber
variables:
MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'
steps:
- script: echo $(MyRunNumber)
- script: echo $(Build.BuildNumber)