Use a variável de carimbo de data/hora no pipeline de devops do Azure

Aug 17 2020

Estou preso ao usar variáveis ​​de compilação em pipelines de devops do Azure.

O que tento alcançar: criar uma variável com o carimbo de data/hora atual e usar essa variável para definir o nome da compilação e a versão do artefato (para rastreabilidade).

Na minha configuração atual, o script powershell é executado com sucesso, mas a variável foo está vazia na etapa npm (consulte o código yml abaixo).

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'

Minhas perguntas: Por que a variável foo (introduzida com o powershell) está vazia na etapa npm? Existe uma maneira de definir o nome da compilação com a variável auto-introduzida foo (para usar o mesmo carimbo de data/hora para o nome da compilação e a versão do artefato)?

Respostas

1 PatrickLu-MSFT Aug 18 2020 at 16:54

Você está usando o formato errado de seu pipeline YAML. Você pode usar o trecho abaixo:

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'

Então esta variável foo deve ser introduzida com sucesso no powershell. Você o verá expandido na tarefa follow npm.