Use la variable de marca de tiempo en la canalización de Azure DevOps
Estoy atascado en el uso de variables de compilación en canalizaciones de Azure DevOps.
Lo que trato de lograr: crear una variable con la marca de tiempo actual y usar esta variable para establecer el nombre de compilación y la versión del artefacto (para la trazabilidad).
En mi configuración actual, el script de PowerShell se ejecuta con éxito, pero la variable foo está vacía en el paso npm (consulte el código yml a continuación).
variables:
system.debug: true
name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)-$(Hours)$(Minutes)$(Seconds)
[...]
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: 'Write-Host "Setting up the date time for build variable"
$date=$(Get-Date -format yyyyMMdd-Hmmss)
Write-Host "##vso[task.setvariable variable=foo]$date"'
- task: Npm@1
inputs:
command: 'custom'
customCommand: '--no-git-tag-version version prerelease --preid=dev-$(foo)'
displayName: 'npm version prerelease'
Mis preguntas: ¿Por qué la variable foo (introducida con powershell) está vacía en el paso npm? ¿Hay alguna manera de establecer el nombre de compilación con la variable autointroducida foo (para usar la misma marca de tiempo para el nombre de compilación y la versión del artefacto)?
Respuestas
Está utilizando el formato incorrecto de su canalización YAML. Podrías usar el siguiente fragmento:
steps:
- powershell: |
Write-Host "Setting up the date time for build variable"
$date=$(Get-Date -format yyyyMMdd-Hmmss)
Write-Host "##vso[task.setvariable variable=foo]$date"
displayName: 'PowerShell Script'
Entonces esta variable foo debería introducirse correctamente con powershell. Verá que se expande en la tarea de seguimiento de npm.
