如何在Azure DevOps Server 2019本地中使用yaml模板参数?

时间:2020-03-06 21:40:14

标签: azure-devops

根据https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops-2019上的官方文档,Azure DevOps Server 2019本地支持所有功能。

但是,我无法使其与带有参数的简单yaml模板一起使用。

这是我的Yaml模板(名为prepare-sonar-qube.yml):

parameters:
- name: projectKey
  type: string

- name: projectName
  type: string
  default: ${{ parameters.projectKey }}

- name: useDotCover
  type: boolean
  default: false

steps:
- template: install-java.yml

- task: SonarQubePrepare@4
  displayName: 'Prepare SQ Analysis'
  inputs:
    SonarQube: 'SonarQube'
    scannerMode: 'MSBuild'
    projectKey: parameters.projectKey
    projectName: parameters.projectName
    ${{ if parameters.useDotCover }}: 
      extraProperties: |
        sonar.cs.dotcover.reportsPaths=$(Common.TestResultsDirectory)\coverage\*.CoverageResult.html
        sonar.inclusions=**/*.cs
    ${{ if !parameters.useDotCover }}: 
      extraProperties: |
        sonar.cs.opencover.reportsPaths=$(Common.TestResultsDirectory)\coverage\*.CoverageResult.xml 
        sonar.inclusions=**/*.cs

这是azure-pipelines.yml:

trigger:
- master

name: 1.0.$(Date:yy)$(DayOfYear)$(Rev:.r)

jobs:
- job: Build
  pool:
    demands: DotNetFramework
  workspace:
    clean: all
  variables:
  - template: variables.yml  
  steps:
  - template: prepare-sonar-qube.yml
    parameters:
      projectKey: logs2db

...

运行该构建,我得到以下可爱的错误消息:

/prepare-sonar-qube.yml (Line: 2, Col: 1): A sequence was not expected

enter image description here

那么我在做什么错了? (除了是忠实的TFS客户之外,他们一直使用过时的本地Azure DevOps Server 2019,与不断发展的托管Azure DevOps Services相比似乎无处可走)

2 个答案:

答案 0 :(得分:0)

这看起来像一个简单的缩进问题。

这是我的一个工作模板中的一个片段。

parameters:
  - name: sln
    type: string
    default: ''
  - name: slnName
    type: string
    default: ''
  - name: proj
    type: string
    default: ''

尝试使用space space - name: [name]

答案 1 :(得分:0)

您没有做错任何事情。遗憾的是,这是我们的文件问题。

您尝试使用的语法是我们的​​新richer YAML syntax功能,到目前为止,Azure DevOps Server 2019中不支持该功能。

为了在更改文档之前让公众知道并避免这种情况,我创建了一个线程并宣布不支持here


目前,本地服务器仅支持older syntax,其中默认值声明为没有类型或值约束的映射

parameters:
  solution: '**/*.sln'

parameters:
  solution: ''