Compartir a través de


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)

Definición de variables