下面的 yaml 创建一个管道。管道按预期运行,除非您尝试通过门户查看/跳过阶段。此时,我收到错误消息
Unable to load the pipeline's stages.
当我通过门户手动创建管道时,使用与自动生成的管道相同的 ymlPath,我可以加载管道阶段。
parameters:
- name: 'branch'
type: string
default: 'main'
- name: 'folderPath'
type: string
- name: 'pipelineName'
type: string
- name: 'repositoryName'
type: string
- name: 'repositoryType'
type: string
default: 'tfsgit'
- name: 'skipFirstRun'
type: boolean
default: true
- name: 'ymlPath'
type: string
- name: 'jobName'
type: string
default: 'CreatePipeline'
- name: 'dependsOn'
type: object
default: []
- name: 'displayName'
type: string
default: 'Create a Pipeline'
jobs:
- job: '${{ parameters.jobName }}'
displayName: '${{ parameters.displayName }}'
dependsOn: '${{ parameters.dependsOn }}'
pool:
vmImage: windows-latest
steps:
- script: echo $(System.AccessToken) | az devops login
displayName: 'Login to DevOps'
- task: PowerShell@2
name: 'CreatePipeline'
displayName: 'Create a Pipeline'
inputs:
targetType: 'inline'
failOnStderr: true
script: |
$pipelineResult = (az pipelines create `
--name "${{ parameters.pipelineName }}" `
--repository "${{ parameters.repositoryName }}" `
--folder-path "${{ parameters.folderPath }}" `
--repository-type "${{parameters.repositoryType }}" `
--branch "${{ parameters.branch }}" `
--skip-first-run "${{ parameters.skipFirstrun }}" `
--yml-path "${{ parameters.ymlPath}}" `
--debug `
| ConvertFrom-Json)
Write-Host "##vso[task.setvariable variable=pipelineId;isOutput=true;]$($pipelineResult.id)"
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
az pipeline show
CLI 命令,但由于我的组织阻止它而面临策略问题。我的组织最近遇到了同样的问题:尽管我们的 YAML 语法很好,但我们无法加载管道阶段或资源。我不确定我们的解决方案是否适合您的解决方案,但我们发现空的“YAML 的默认代理池”设置导致了该问题(似乎是 Microsoft 错误)。要找到此设置,请执行以下操作:
我不认为价值特别重要。我们为所有管道作业指定池,因此它永远不会被使用。我希望这对您有帮助,就像对我们有帮助一样!