cách Truy cập Biến trong Azure script btw Powershell trong Dev Ops Pipeline
Trong tệp yaml của mình, tôi đã xác định một số biến phải chứa giá trị của tháng ($MinorVersion)hoặc năm ($MajorVersion), bằng cách đặt giá trị thành '$(Month)'và / hoặc '$(Year:yy)'. Khi tôi in chúng trong task script hoặc taskhell, nó chỉ hiển thị '$(Month)'và / hoặc '$(Year:yy)'. Sản lượng kỳ vọng của biến $(MajorVersion)tất nhiên là tháng và năm hiện tại 09và 20.
Ai đó có thể cho tôi biết cách tôi có thể truy cập biến $MinorVersiontrong task script / powershell để lấy giá trị thực của nó không? Đó là nội dung tệp:
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"
Đầu ra chỉ hiển thị nội dung không được đánh giá của các biến:
Trả lời
Ai đó có thể cho tôi biết làm cách nào tôi có thể truy cập biến $ MinorVersion trong task script / powershell để nhận giá trị thực của nó không?
Các nhà phát triển Az không có các biến Hệ thống như vậy hoặc các biến Định sẵn như $(Year:yy)và $(Month). Các biến xác định trước có sẵn được xác định ở đây , chúng tôi không thể mở rộng $(Year:yy)và $(Month)vì chúng không được xác định trước. Đối với value: '$(BuildID)', định dạng chính xác của BuildIDlà $(Build.BuildID)thay vì $(BuildID).
Đây $(Date:yyyyMMdd) and $(Rev:.r)là một cái gì đó chỉ hợp lệ cho Số bản dựng ( namecho đường ống yaml), tài liệu liên quan tại đây . Vì vậy, các biến bình thường không thể mở rộng giá trị của chúng, chỉ namephần tử mới có thể nhận ra chúng. Bạn nên sử dụng:
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)
Thay vì định dạng sai:
name: $(BuildDefinitionName)_$(MajorVersion).$(MinorVersion).xxx
Cách giải quyết để lấy / xác định các biến có giá trị của Ngày giờ:
Mặc dù các biến của Ngày giờ không được xác định trước, chúng ta có thể đặt một bước PowerShell ở đầu stepsđể xác định các biến đó theo cách thủ công. Bạn có thể kiểm tra link1 và link2 để biết thêm chi tiết.
Vì vậy, nếu bạn muốn xác định các biến liên quan đến dữ liệu, bạn có thể kiểm tra các biến tập hợp trong tập lệnh :
- 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)
Đầu ra của nhiệm vụ PS thứ hai: