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

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.

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

En YAML, se llama a esta name propiedad y se encuentra en el nivel raíz de una canalización. Si no se especifica, a la ejecución se le da un entero único como nombre. Puede proporcionar a las ejecuciones nombres mucho más útiles que sean significativos para su equipo. Puede usar una combinación de tokens, variables y caracteres de subrayado.

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 aún no están disponibles en TFS.

Ejemplo

En el momento en que se inicia una ejecución:

  • Project nombre: Fabrikam

  • Nombre de canalización: CIBuild

  • Rama: maestra

  • Id. de compilación/Identificador 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_master_20190505.2

Tokens

En la tabla siguiente se muestra cómo se resuelve cada token en función del ejemplo anterior. Solo puede usar estos tokens para definir un número de ejecución; no funcionan en ningún otro lugar de la canalización.

Token Valor de reemplazo de ejemplo
$(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 identificador 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 será 3, y así sucesivamente).

Use $(Rev:r) para asegurarse de que cada compilación completada tiene un nombre único. Cuando se inicia una compilación, si no ha cambiado nada más en el número de compilación, el valor entero Rev se incrementa en uno.

Si desea mostrar ceros de prefijo en el número, puede agregar caracteres "r" adicionales. Por ejemplo, especifique $(Rev:rr) si desea que el número rev comience por 01, 02, y así sucesivamente. Si usa una rev de 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 de número de versión en los artefactos que se generan.
$(Date:yyyyMMdd) 20090824

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

Variables

También puede usar variables predefinidas y definidas por el usuario que tengan un ámbito de "Todos" 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 el usuario en la My.Variable.

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 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?

Las ejecuciones pueden tener hasta 255 caracteres.

¿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 donde se ejecuta el servidor de nivel de aplicación.

¿Cómo se puede hacer referencia a la variable de número de ejecución dentro de un script?

Se puede llamar a la variable de número de ejecución con $(Build.BuildNumber) . Puede definir una nueva variable que incluya el número de ejecución o llamar al número de ejecución directamente. 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 dinámicamente con condiciones?

Puede usar variables como parte del número de ejecución. En este ejemplo, la variable why cambia en función de y se usa como parte del número de Build.Reason ejecución.

variables:
  ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
    why: pr
  ${{ elseif eq(variables['Build.Reason'], 'Manual' ) }}:
    why: manual
  ${{ elseif eq(variables['Build.Reason'], 'IndividualCI' ) }}:
    why: indivci 
  ${{ else }}:
    why: other

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

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: echo '$(Build.BuildNumber)' ## output run number