come la variabile di accesso in Azure script btw Powershell in Dev Ops Pipeline

Sep 20 2020

Nel mio file yaml ho definito alcune variabili che dovrebbero contenere il valore del mese ($MinorVersion)o dell'anno ($MajorVersion), impostando il valore su '$(Month)'e / o '$(Year:yy)'. Quando li stampo nello script dell'attività o nel PowerShell dell'attività, vengono visualizzati solo '$(Month)'e / o '$(Year:yy)'. L'output atteso della variabile $(MajorVersion)è ovviamente il mese e l'anno correnti 09e 20.

Qualcuno può dirmi come posso accedere alla variabile $MinorVersionnello script attività / powershell per ottenerne il valore effettivo? Questo è il contenuto dei file:

trigger:
- master

pool:
  vmImage: 'windows-latest'

#import variable group resize-group, local variables are name/value pairs
variables:
- group: resize-group
- name: buildConfiguration
  value: 'Release'
- name: appxPackageDir
  value: '$(build.artifactStagingDirectory)\AppxPackages\\' - name: MajorVersion value: '$(Year:yy)'
- name: MinorVersion
  value: '$(Month)' - name: PatchVersion value: 45 - name: RevVersion value: '$(BuildID)'
- name: Packageappxmanifest
  value: Package.appxmanifest
- name: PackageVersion
  value: '$(MajorVersion).$(MinorVersion).$(PatchVersion).$(RevVersion)'


name: $(BuildDefinitionName)_$(MajorVersion).$(MinorVersion).$(PatchVersion)$(RevVersion) steps: - checkout: self submodules: true - script: | echo %MinorVersion% echo %variables.MinorVersion% echo $($[variables.MinorVersion]) echo ${{ variables.MinorVersion }} # outputs initialValue
     echo $(Month) echo $(MajorVersion)
     echo $(MinorVersion) echo $(RevVersion)
     echo $(PackageVersion) echo $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r) - powershell: | Write-Host $env:MinorVersion
    Write-Host  $env:variables.MinorVersion% Write-Host "$env:MY_MAPPED_PACKAGEVERSION"
    Write-Host "$env:MY_MAPPED_REVVERSION"

L'output mostra solo il contenuto non valutato delle variabili:

Risposte

1 LanceLi-MSFT Sep 21 2020 at 03:06

Qualcuno può dirmi come posso accedere alla variabile $ MinorVersion nello script dell'attività / powershell per ottenerne il valore effettivo?

Az devops non ha tali variabili di sistema o variabili predefinite come $(Year:yy)e $(Month). Le variabili predefinite disponibili sono definite qui , non possiamo espandere $(Year:yy)e $(Month)perché non sono predefinite. Per quanto riguarda value: '$(BuildID)', il formato corretto di BuildIDè $(Build.BuildID)invece di $(BuildID).

Il $(Date:yyyyMMdd) and $(Rev:.r)sono qualcosa che solo valido per numero di build ( nameper la conduttura YAML), relativo documento qui . Quindi le variabili normali non possono espandere il loro valore, solo l' nameelemento può riconoscerle. Dovresti usare:

name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)

Invece di formato sbagliato:

name: $(BuildDefinitionName)_$(MajorVersion).$(MinorVersion).xxx

Soluzione alternativa per ottenere / definire variabili con valore Date time:

Sebbene le variabili di Date time non siano predefinite, è possibile inserire un passaggio di PowerShell all'inizio di stepsper definire manualmente tali variabili. Puoi controllare link1 e link2 per maggiori dettagli.

Quindi, se desideri definire variabili relative ai dati, puoi controllare le variabili impostate negli script :

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $year=$(Get-Date -Format 'yyyy')
      Write-Host "##vso[task.setvariable variable=MajorVersion]$year" $month=$(Get-Date -Format 'MM') Write-Host "##vso[task.setvariable variable=MinorVersion]$month"
      $day=$(Get-Date -Format 'dd')
      Write-Host "##vso[task.setvariable variable=DayOfMonth]$day" - powershell: | Write-Host $(MajorVersion)
    Write-Host  $(MinorVersion) Write-Host $(DayOfMonth)

Uscita della seconda attività PS: