Configuración de números de compilación o ejecución

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

Puede personalizar cómo se numeran las ejecuciones de canalización. El valor predeterminado para el número de ejecución es $(Date:yyyyMMdd).$(Rev:r).

En Azure DevOps, $(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 al cambiar parte del número de compilación. Por ejemplo, si ha configurado el formato de número de compilación como $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r), el número de compilación se restablecerá cuando la fecha cambie al día siguiente. Si el número de compilación es MyBuild_20230621.1, el siguiente número de compilación es MyBuild_20230621.2. Al día siguiente, el número de compilación es MyBuild_20230622.1.

Si el formato del número de compilación es 1.0.$(Rev:r), el número de compilación se restablece 1.0.1 al cambiar parte del número. Por ejemplo, si el último número de compilación era 1.0.3 y cambia el número de compilación a 1.1.$(Rev:r) para indicar un cambio de versión, el siguiente número de compilación es 1.1.1.

En YAML, se llama name a esta propiedad y debe estar al nivel de raíz de una canalización.

Nota:

Los elementos especificados en el nivel raíz de un archivo YAML son propiedades de canalización.

Si no se especifica, la ejecución recibe un entero único como su nombre. Puede asignar nombres a las ejecuciones mucho más útiles y relevantes para su equipo. Puede usar una combinación de tokens, variables y caracteres de subrayado. La propiedad name no funciona en archivos de plantilla.

name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)

steps:
  - script: echo '$(Build.BuildNumber)' # outputs customized build number like project_def_master_20200828.1

Las compilaciones de YAML no están todavía disponibles en TFS.

Ejemplo

En este momento, se inicia una ejecución:

  • Nombre del proyecto: Fabrikam

  • Nombre de la canalización: CIBuild

  • Rama: principal.

  • Id. de compilación/Id. de ejecución: 752

  • Fecha: 5 de mayo de 2019.

  • Hora: 9:07:03 p.m.

  • Una ejecución completada anteriormente hoy.

Si especifica este formato de número de compilación:

$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:.r)

A continuación, la segunda ejecución de este día se denominaría: Fabrikam_CIBuild_main_20190505.2

Tokens

La tabla siguiente muestra cómo se resuelve cada token basándose en el ejemplo anterior. Puede usar estos tokens solo para definir un número de ejecución; no funcionan en ningún otro lugar de la canalización.

Token Ejemplo de valor de reemplazo
$(Build.DefinitionName) CIBuild

Nota: 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 inmutable interno que también se conoce como id. de ejecución. Es único en toda la organización.
$(DayOfMonth) 5
$(DayOfYear) 217
$(Hours) 21
$(Minutes) 7
$(Month) 8
$(Rev:r) 2 (La tercera ejecución es 3, y así sucesivamente).

Use $(Rev:r) para asegurarse de que todas las compilaciones completadas tengan un número único. Una vez completada una compilación, si no ha cambiado nada más en el número de compilación, el valor del entero Rev se incrementa en uno.

Si desea mostrar ceros de prefijo en el número, puede agregar más caracteres “r”. Por ejemplo, especifique $(Rev:rr) si desea que el número Rev comience por 01, 02, y así sucesivamente. Si usa un Rev con relleno cero 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, lo que provoca una discrepancia en el número de versión de los artefactos que se producen.
$(Date:yyyyMMdd) 20090824

Puede especificar otros formatos de fecha como $(Date:MMddyy)
$(Seconds) 3
$(SourceBranchName) main (principal)
$(TeamProject) Fabrikam
$(Year:yy) 09
$(Year:yyyy) 2009

variables

También puede usar variables definidas y predefinidas por el usuario que tengan un ámbito de "All" en el número. 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)

Las cuatro primeras variables están predefinidas. My.Variable lo define usted en la pestaña variables.

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).

Preguntas más frecuentes

¿Qué tamaño puede tener un número de ejecución y qué caracteres puedo usar?

Las ejecuciones pueden contener un máximo de 255 caracteres. Los caracteres que no están permitidos incluyen ", /, :, <, >, ', |, ?, @ y *. No puede terminar 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 se puede hacer referencia a la variable del número de ejecución dentro de un script?

Se puede llamar a la variable del número de ejecución con $(Build.BuildNumber). Puede definir una nueva variable que incluya el número de ejecución o llame directamente al número de ejecución. En este ejemplo, $(MyRunNumber) es una nueva variable que incluye el número de ejecución.

# Set MyRunNumber
variables: 
  MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'


steps:
- script: echo $(MyRunNumber) # display MyRunNumber
- script: echo $(Build.BuildNumber) #display Run Number

¿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 este ejemplo, la variable why cambia según Build.Reason y se usa como parte del número de ejecución.

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)' ## output run number