Usare la variabile timestamp nella pipeline di Azure devops

Aug 17 2020

Sono bloccato nell'usare le variabili di build nelle pipeline devops di Azure.

Cosa cerco di ottenere: creare una variabile con il timestamp corrente e utilizzare questa variabile per impostare il nome della build e la versione dell'artefatto (per la tracciabilità).

Nella mia configurazione attuale lo script PowerShell viene eseguito correttamente ma la variabile foo è vuota nel passaggio npm (vedere il codice yml di seguito).

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'

Le mie domande: perché la variabile foo (introdotta con PowerShell) è vuota nel passaggio npm? C'è un modo per impostare il nome della build con la variabile auto-introdotta foo (per utilizzare lo stesso timestamp per il nome della build e la versione dell'artefatto)?

Risposte

1 PatrickLu-MSFT Aug 18 2020 at 16:54

Stai utilizzando il formato sbagliato della tua pipeline YAML. Potresti usare lo snippet di seguito:

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'

Quindi questa variabile foo dovrebbe essere introdotta con PowerShell con successo. Lo vedrai espandersi nell'attività follow npm.