Azure DevOps Server 2019 YAML流水线parameters报Unexpected value错误
问题根源
- 报错的核心原因是 Azure DevOps Server 2019 版本原生不支持顶层
parameters定义,该功能为 Azure DevOps Server 2020 及更高版本的新增特性,2019版本仅允许在YAML模板内部定义参数,不支持在根节点直接声明parameters配置。 - 即便在支持顶层参数的版本中,
parameters也必须放在YAML根节点的最顶部,优先级高于variables,顺序放错也会触发校验报错。
解决方案
方案1:用运行时变量替代布尔参数(2019版本兼容,无需升级服务器)
2019版本支持配置可在流水线运行时修改的变量,可完全替代布尔参数的使用需求,示例配置如下:
#VARIABLES variables: BuildPlatform: 'x64' BuildConfiguration: 'release' # 替代布尔参数的变量,默认值设为false/true MATLAB_upgrade: false #STEPS steps: # 条件执行示例:变量为true时才执行对应步骤 - task: NuGetCommand@2 condition: eq(variables['MATLAB_upgrade'], 'true') inputs: command: 'restore' # 其余nuget配置按需填写
配置完成后,在Azure DevOps流水线编辑页的变量设置中,给MATLAB_upgrade变量勾选允许用户在运行此流水线时重写此值,即可实现运行时修改开关的效果。
方案2:升级服务器版本后使用原生参数
如果需要使用原生parameters特性,可将Azure DevOps Server升级到2020及以上版本,调整YAML配置顺序即可正常生效,示例如下:
# PARAMETERS 必须放在根节点最顶部 parameters: - name: 'MATLAB-upgrade' displayName: 'Upgrade Matlab binaries' type: boolean default: false # VARIABLES 放在parameters之后 variables: BuildPlatform: 'x64' BuildConfiguration: 'release' steps: # 引用参数示例 - script: echo ${{ parameters.MATLAB-upgrade }} condition: eq(${{ parameters.MATLAB-upgrade }}, true)
内容的提问来源于stack exchange,提问作者Antares
相关产品推荐
相关产品推荐

