【发布时间】:2021-04-30 13:09:30
【问题描述】:
我希望能够将管道变量传递到 Azure DevOps Server 中的 Powershell 构建步骤。我试图通过将变量作为参数传递来实现这一点。
这是我的管道 YAML 文件:
- task: PowerShell@2
displayName: 'Detect Subfolder Changes'
name: setvarStep
inputs:
targetType: 'filePath'
filePath: $(System.DefaultWorkingDirectory)\detectchanges.ps1
failOnStderr: true
- task: PowerShell@2
displayName: 'Get Version Number'
name: getVersion
inputs:
arguments: >
- packagepath $(setvarStep.changedPackage)
targetType: 'filePath'
filePath: $(System.DefaultWorkingDirectory)\getversion.ps1
failOnStderr: true
这是我传递“packagepath”参数的 Powershell 脚本 (getversion.ps1):
param($packagepath)
Write-Host "packagepath is: $packagepath"
$xml = [Xml] (Get-Content $packagepath)
$version = [Version] $xml.Project.PropertyGroup.Version
"##vso[task.setvariable variable=packageVersion;isOutput=true]$version"
Writ-Host 命令打印出 'packagepath is: -'。我打开了调试,参数值确实在日志中显示为:##[debug]INPUT_ARGUMENTS: '- packagepath dotnet/TestPackage/*.csproj'
除了将变量作为参数传递之外,我还尝试将变量插入到脚本中,如下所示:$packagepath = $($env:SETVARSTEP.CHANGEDPACKAGE),但它不起作用。
我确实尝试在构建步骤中为参数参数添加双引号,如下所示:- packagepath "$(setvarStep.changedPackage)"。它也没有工作。
参数值正在获取到 Powershell 脚本 getversion.ps1 但由于某种原因该值未显示。
【问题讨论】:
-
- packagepath->-packagepath? -
成功了!谢谢。
标签: powershell azure-devops azure-pipelines