comment la variable d'accès dans le script Azure btw Powershell dans le pipeline Dev Ops
Dans mon fichier yaml, j'ai défini certaines variables qui devraient contenir la valeur du mois ($MinorVersion)ou de l'année ($MajorVersion), en définissant la valeur sur '$(Month)'et / ou '$(Year:yy)'. Lorsque je les imprime dans le script de tâche ou dans le PowerShell de tâche, il affiche uniquement '$(Month)'et / ou '$(Year:yy)'. La sortie attendue de la variable $(MajorVersion)est bien sûr le mois et l'année en cours 09et 20.
Quelqu'un peut-il me dire comment accéder à la variable $MinorVersiondans le script de tâche / PowerShell pour en obtenir la valeur réelle? C'est le contenu des fichiers:
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"
La sortie affiche uniquement le contenu non évalué des variables:
Réponses
Quelqu'un peut-il me dire comment accéder à la variable $ MinorVersion dans le script de tâche / powershell pour en obtenir la valeur réelle?
Az devops n'a pas de telles variables système ou des variables prédéfinies comme $(Year:yy)et $(Month). Les variables prédéfinies disponibles sont définies ici , nous ne pouvons pas les développer $(Year:yy)et $(Month)car elles ne sont pas prédéfinies. Quant à value: '$(BuildID)', le format correct de BuildIDest $(Build.BuildID)au lieu de $(BuildID).
Il $(Date:yyyyMMdd) and $(Rev:.r)s'agit de quelque chose qui n'est valable que pour le numéro de build ( namepour le pipeline yaml), document associé ici . Les variables normales ne peuvent donc pas augmenter leur valeur, seul l' nameélément peut les reconnaître. Tu devrais utiliser:
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)
Au lieu d'un format incorrect:
name: $(BuildDefinitionName)_$(MajorVersion).$(MinorVersion).xxx
Solution de contournement pour obtenir / définir des variables avec la valeur Date et heure:
Bien que les variables de Date time ne soient pas prédéfinies, nous pouvons placer une étape PowerShell au début de stepspour définir ces variables manuellement. Vous pouvez vérifier link1 et lien2 pour plus de détails.
Donc, si vous souhaitez définir des variables liées aux données, vous pouvez vérifier les variables d'ensemble dans les scripts :
- 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)
Sortie de la deuxième tâche PS: