根据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
那么我在做什么错了? (除了是忠实的TFS客户之外,他们一直使用过时的本地Azure DevOps Server 2019,与不断发展的托管Azure DevOps Services相比似乎无处可走)
答案 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: ''