Posteriormente a observar en diferentes repositorios y páginas al concluir hemos descubierto la respuesta que te mostramos ahora.
Solución:
Además de la respuesta elegida, también puede usar la siguiente función para aplicar un número de compilación personalizado
steps:
- script: echo "##vso[build.updatebuildnumber]$(CustomValue)"
Como se documenta aquí: Comandos de registro de Azure DevOps
Encontré esto útil en mi situación, donde quería leer la versión semántica de mi binario y aplicarla al nombre de la compilación.
Editar 2020-02-12:
Para dar más detalles sobre cómo puede aprovechar la updatebuildnumber
función, aquí hay un ejemplo de cómo extraer el SemVer de un archivo package.json en una API de NodeJS y usarlo para actualizar el número de compilación de Azure DevOps. Este ejemplo usa las compilaciones de estilo yaml en Azure DevOps.
Ejemplo:
Script yaml de DevOps…
- job: GetSemVer
displayName: Get Semantic Version from Application
timeoutInMinutes: 3
continueOnError: false
steps:
- task: [email protected]
inputs:
versionSpec: '12.13.0'
displayName: Install Node
continueOnError: false
- bash: |
APPSEMVER=$(node -pe "require('./package.json').version")
echo "##vso[task.setvariable variable=version;isOutput=true]$APPSEMVER"
name: App
- job: CreateBuildVersion
displayName: Create Build Identifier
dependsOn: GetSemVer
timeoutInMinutes: 2
continueOnError: false
variables:
appVersion: $[ dependencies.GetSemVer.outputs['App.version'] ]
buildIncrement: $[counter(variables['appVersion'], 0)] # create a counter that is used to increment build run for same app version
buildVersion: "$(appVersion)$(optionalBuildTag)-$(buildIncrement)"
steps:
- bash: echo "##vso[build.updatebuildnumber]$(buildVersion)" # Update build number in Pipeline UI
Primero en job: GetSemVer
extraigo la versión semántica del paquete.json y creo una variable que se pasará al siguiente trabajo…
- bash: |
APPSEMVER=$(node -pe "require('./package.json').version")
echo "##vso[task.setvariable variable=version;isOutput=true]$APPSEMVER"
name: App
A continuación, en job: CreateBuildVersion
Uso la versión de la aplicación de GetSemVer
trabajo para crear una variable local, titulada appVersion
un contador de producción y ejecución, titulado buildIncrement
. El contador de compilación y ejecución se incrementa cada vez que se ejecuta una compilación para el mismo servidor de aplicaciones. El contador se incluirá en el número de compilación que proporcionaremos a Azure DevOps y ayuda a evitar conflictos de nombres si ejecutamos una compilación varias veces para la misma versión de la aplicación.
appVersion: $[ dependencies.GetSemVer.outputs['App.version'] ]
buildIncrement: $[counter(variables['appVersion'], 0)] # create a counter that is used to increment build run count for same app version
Luego, construyo un buildVersion
variable, que se compone del semver de la aplicación, una etiqueta de compilación opcional (p. ej., “-alpha” para dev enviro) que se inyecta desde una variable de enviro en DevOps y el recuento de ejecución de compilación. por ejemplo, “1.1.6-alfa-0”
buildVersion: "$(appVersion)$(optionalBuildTag)-$(buildIncrement)"
Finalmente, actualizo el número de compilación en Azure llamando al build.updatebuildnumber
funcionar con mi nuevo buildVersion
variable.
- bash: echo "##vso[build.updatebuildnumber]$(buildVersion)" # Update build number in Pipeline UI
Nota: puedes organizar los pasos anteriores como quieras. Separamos obtener SemVer de construir buildVersion, porque usamos diferentes lenguajes y marcos que hacen que obtener SemVer sea diferente de una aplicación a otra. Entonces, ese paso para nosotros cambia a menudo. Sin embargo, podría hacer todos esos pasos en un “trabajo”.
Parece que “Algunas variables son insertadas automáticamente por el sistema”. y estas variables predefinidas se pueden encontrar en https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=vsts. en mi caso podría usar
name: $(BuildDefinitionName)-$(Rev:.r)
resources:
- repo: self
queue:
name: Hosted VS2017
variables:
testing: $(Build.BuildNumber)
steps:
- task: [email protected]
displayName: 'Publish Artifact: testing'
inputs:
PathtoPublish: Testing
ArtifactName: Testing
Como mi compilación YAML.
Si crees que te ha resultado de utilidad este artículo, nos gustaría que lo compartas con el resto juniors y nos ayudes a extender esta información.