使用 dash(-) 作为参数中键名的一部分(Azure 管道)

S.R*_*S.R 3 continuous-integration azure azure-devops azure-pipelines

我正在创建一个 azure 管道作业并希望使用all-features名称作为关键参数。它在 yaml 中有效,但看起来我不能在条件下使用它,或者以某种方式 azure 解析错误。有可能让它工作吗?

parameters:
  all-features: false
  name: cargo_check

jobs:
- job: ${{ parameters.name }}
  pool:
    vmImage: ubuntu-16.04
  variables:
    cliflags: ''
  steps:
  - template: ../steps/install-rust.yml
    parameters:
      rustup_toolchain: ${{ parameters.rust }}

  - script: echo '##vso[task.setvariable variable=cliflags]$(cliflags) --all-features'
    enabled: ${{ parameters.all-features }}  ###### at this line I am getting error #######
    displayName: "Activate all available features"

Run Code Online (Sandbox Code Playgroud)

错误:

/ci/jobs/cargo-check.yml@templates(第 99 行,第 14 列):意外符号:“所有功能”。位于表达式中的位置 12:parameters.all-features。如需更多帮助,请参阅https://go.microsoft.com/fwlink/?linkid=842996

/ci/jobs/cargo-check.yml@templates(第 99 行,第 14 列):意外值 '${{ parameters.all-features }}'

解决方法是将名称从 更改为paramters.all-featuresparameters.all_features但我喜欢使用破折号(-)。它将与命令行界面中的参数名称相同,在这种情况下我的观点是什么。

Leo*_*SFT 5

简短的回答:

您可以使用parameters['all-features']代替,parameters.all-features它会起作用。


长答案:

使用 dash(-) 作为参数中键名的一部分(Azure 管道)

任何不便敬请谅解。

此行为是有意设计的。经过一段时间的调查,但找不到任何解决方法来解决此问题。

正如文档表达式统计:

变量作为表达式的一部分,您可以使用以下两种语法之一访问变量:

  • 索引语法: variables['MyVar']
  • 属性取消引用语法: variables.MyVar

为了使用属性取消引用语法,属性名称必须

  • 以 aZ 或 _ 开头
  • 后跟 aZ 0-9 或 _

希望这对你有帮助。