16

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: ....

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 }}

これにより、次の結果が得られます。

myString 値は '' その長さは 0 です null または空ですか? True null か空白か? 真実

4

3 に答える 3

3

ランタイム パラメーターの単一の空白は、空として解釈されません。著者が示した例では、実行時パラメーターは最初に環境変数に渡されますMS。この手順により、先頭と末尾の空白を削除できます。そのため、MSは空の文字列です。これを試してみると:

parameters:
- name: myString
  type: string
  default: ' '

steps:
- script: |
    echo ">>${{ parameters.myString }}<<"

それは生成します:

>> <<

とにかく、環境変数を介して実行時パラメーターをスクリプトに渡すことは、空白をトリミングする良い回避策です。それ以外の場合は、スクリプト内の空白の問題に対処する必要があります。

于 2021-07-05T03:14:17.050 に答える