Azure devops 如何允许运行时参数使用空字符串?
我刚刚开始在Azure管道中使用运行时参数,但有一点我还不太清楚。考虑到这一点,YAML:Azure devops 如何允许运行时参数使用空字符串?,azure-devops,azure-pipelines,azure-pipelines-yaml,Azure Devops,Azure Pipelines,Azure Pipelines Yaml,我刚刚开始在Azure管道中使用运行时参数,但有一点我还不太清楚。考虑到这一点,YAML: parameters: - name: deployEnvironment displayName: Select your target environment. type: string default: Build_only values: - Build_only - TST - PP - P - name: releaseName type: string
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: ....
为什么releaseName是必需的参数?我希望通过指定default:“
将其保留为空是可选的。文档中没有提到参数是否可以设置为可选
继Kryzstof的回答之后,我进行了进一步的实验,似乎一个仅由空格组成的字符串被解释为空:
似乎这一个空格被解释为空(我也尝试了多个空格)
这将产生:
myString值为“”
它的长度是0
它是空的还是空的?真的
它是空的还是空白的?真的
这真奇怪。但是,如果您将一个空格
'
替换为'
,您将能够触发管道,甚至可以从字段中删除该空格
根据“参数不能是可选的”
将空格
''
作为默认值将起作用(如建议),但空格将保留在字段中。如果删除字段中的空格以便没有文本值,管道运行时将使用默认值'
。这很有趣,谢谢!你知道我会在哪里为Azure管道提交错误报告吗?我接受你的回答,因为它提供了一个体面的解决办法。
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 }}