Números de ejecución y compilación

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

En este artículo se explica cómo se crean los números de compilación y 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 nombre. Puede asignar a las ejecuciones nombres mucho más útiles y relevantes para su equipo. Puede usar una combinación de tokens, variables y caracteres de subrayado en los nombres de compilación.

En las canalizaciones de YAML, se llama a la propiedad de nombre de compilación name 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_202408281.

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. Una vez completada una compilación, si no ha cambiado nada más en el número de compilación, el valor entero de Rev se incrementa en uno.

$(Rev:r) se restablece en 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 la fecha cambie.

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. Al día siguiente, el primer número de compilación 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 PM
  • 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 basándose en el 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 debe 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, y así sucesivamente). Use $(Rev:r) para asegurarse de que todas las compilaciones completadas tengan un número ú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 caracteres r al token Rev. Por ejemplo, especifique $(Rev:rr) si desea que el número Rev comience por 01, 02, y así sucesivamente.

Si usa un relleno de ceros Rev como parte de un esquema de numeración de versiones, tenga en cuenta que algunas tareas de canalización o herramientas populares, como los paquetes NuGet, quitan los ceros iniciales. Este comportamiento provoca una discrepancia 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 porque sus valores no se establecen en el momento en el que se evalúan las expresiones. Estos tokens incluyen $(Build.BuildId), $(Build.BuildURL) y $(Build.BuildNumber).

Variables

Puede utilizar variables definidas por el usuario y predefinidas en el número de compilación. Por ejemplo, si ha definido 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 del equipo donde se 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 según 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 se puede hacer referencia a la variable del número de ejecución dentro de un script?

Puede definir una nueva variable que incluya el número de ejecución o llame 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)

Definición de variables