Wal*_*Vos 11 azure-devops azure-pipelines azure-pipelines-yaml
我刚刚开始使用 Azure Pipelines 中的运行时参数,有些东西我不太明白。考虑这个 Azure Pipelines YAML:
parameters:
- name: deployEnvironment
displayName: Select your target environment.
type: string
default: Build_only
values:
- Build_only
- TST
- PP
- P
- name: releaseName
type: string
default: ''
steps:
- task: ....
Run Code Online (Sandbox Code Playgroud)
为什么 releaseName 是必需参数?我希望通过指定default: ''将其留空是可选的。文档没有提到是否可以将参数设为可选。
跟进 Kryzstof 的回答,我进一步试验,似乎只包含空格的字符串被解释为空:
似乎这个单个空格被解释为空(我也尝试过多个空格)。
parameters:
- name: myString
type: string
default: ' '
steps:
- task: PowerShell@2
inputs:
targetType: inline
script: |
$MS = $ENV:MS
Write-Host "myString value is '$MS'"
Write-Host "Its length is $($MS.Length)"
Write-Host "is it null or empty? $([System.String]::IsNullOrEmpty($MS))"
Write-Host "Is it null or whitespace? $([System.String]::IsNullOrWhiteSpace($MS))"
env:
MS: ${{ parameters.myString }}
Run Code Online (Sandbox Code Playgroud)
这产生:
myString 值是 '' 它的长度是 0 是 null 还是空?True 它是空值还是空格?真的
Krz*_*tof 17
这真的很奇怪。但是,如果您放置而不是''空间,' '您将能够触发管道,甚至从字段中删除该空间。
小智 5
运行时参数的单个空格不会被解释为空。在作者演示的示例中,运行时参数首先传递给环境变量MS。此步骤可以修剪前导和尾随空格。这就是为什么MS是空字符串。如果尝试这个:
parameters:
- name: myString
type: string
default: ' '
steps:
- script: |
echo ">>${{ parameters.myString }}<<"
Run Code Online (Sandbox Code Playgroud)
它将产生:
>> <<
Run Code Online (Sandbox Code Playgroud)
无论如何,通过环境变量将运行时参数传递给脚本是修剪空格的一个很好的解决方法。否则,我们必须处理脚本中的空格问题。
| 归档时间: |
|
| 查看次数: |
5212 次 |
| 最近记录: |