come la variabile di accesso in Azure script btw Powershell in Dev Ops Pipeline
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
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: