YAML Azure Devops:步骤任务参考无效。任务名称不明确

Posted

技术标签:

【中文标题】YAML Azure Devops:步骤任务参考无效。任务名称不明确【英文标题】:YAML Azure Devops: Step task reference is invalid. The task name is ambiguous 【发布时间】:2020-05-16 16:51:03 【问题描述】:

我正在尝试使用 AzureRmWebAppDeployment 任务将 WebJobs 部署到应用服务(Azure 应用服务部署)。

以下是 YAML 代码(任务:AzureRmWebAppDeployment@4):

- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRm'
    azureSubscription: 'hidden'
    appType: 'webApp'
    WebAppName: 'hidden'
    package: '$(Build.StagingDirectory)\WebJob'

当我尝试运行构建时,它给了我这个错误:

Job DeployWebJobsCombo1: Step DeployWebJobsCombo1 task reference is invalid. The task name AzureRmWebAppDeployment is ambiguous. Specify one of the following identifiers to resolve the ambiguity: ae173df0-05de-4ac6-b5cc-853e9f951a33, 497d490f-eea7-4f2b-ab94-48d9c1acdcb1

我尝试用其中任何一个 ID 替换任务名称(任务:ae173df0-05de-4ac6-b5cc-853e9f951a33@4 和任务:ae173df0-05de-4ac6-b5cc-853e9f951a33 都已尝试),但它说它不是一个有效的名字。

我已尝试设置任务的名称属性 (https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#task),但它不接受 GUID:

name: string  # identifier for this step (A-Z, a-z, 0-9, and underscore)

我无法在网上找到有关如何实际指定标识符 ae173df0-05de-4ac6-b5cc-853e9f951a33 或 497d490f-eea7-4f2b-ab94-48d9c1acdcb1 的任何信息。谁能指点我如何使用这些标识符?

【问题讨论】:

显然,还有这个特别令人困惑的变种:Step 任务引用无效。任务名称 contoso.cool-extension.foobar.Foobar 不明确。指定以下标识符之一来解决歧义:contoso.cool-extension.foobar.Foobar、contoso.cool-extension.foobar.Foobar "我已尝试设置任务的名称属性 […]" 请注意,您已尝试设置 步骤name 属性,而不是任务.它们明显不同——一个步骤使用一个任务。 【参考方案1】:

所以497d490f-eea7-4f2b-ab94-48d9c1acdcb1 似乎是AzureRmWebAppDeployment@4 的id

Github for the task 在这里。

当您的 Azure DevOps 组织中存在同名的两个任务\扩展时,似乎会发生该错误。请参阅支持论坛 here 和 here。

我希望您应该能够使用- task: 497d490f-eea7-4f2b-ab94-48d9c1acdcb1@4 不确定为什么它不起作用。我刚试过,它把它识别为AzureRmWebAppDeployment 任务。也许再试一次。

此外,如果您想查看组织中存在的任务,您可以使用 API 并点击此 URL 以获取 YAML Schema。

https://dev.azure.com/organization/_apis/distributedtask/yamlschema?api-version=5.1 我会在这里检查可能的重复项。

【讨论】:

YAML 自动更正不喜欢它(在 Azure devops 在线编辑器中),但它在运行时可以工作。谢谢!

以上是关于YAML Azure Devops:步骤任务参考无效。任务名称不明确的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure DevOps 中,与相同的 YAML 管道模板相比,经典编辑器模板中的任务缺失

在 Azure DevOps 中是不是有一种 GUI 方法可以禁用基于 YAML 的管道中的任务?

为啥 SonarQube 不从 yaml 构建更新 Azure DevOps 质量门状态?

如何在 yaml 中处理 Azure DevOps 管道中的错误?

如何从 azure devops 上的图表 yaml 文件中获取 appVersion?

是否可以使用经典 UI 在 for 循环中运行 Azure DevOps 管道任务?