Azure DevOps - 获取自定义任务参考 ID

Azure DevOps - get custom Task Reference ID

我想用 Definitions - Update REST API 调用更新管道。

这很好用,但是当我想添加一个 自定义任务 (自制构建管道任务扩展)时,我很难找到正确的 任务参考编号:

Invoke-RestMethod : {"$id":"1","innerException":null,"message":"The pipeline is not valid. A task is missing. The pipeline references a task called '7f1fe94f-b811-4ba1-9d6a-b6c27de758d7'. This 
usually indicates the task isn't installed, and you may be able to install it from the Marketplace: https://marketplace.visualstudio.com. (Task version 1.*, job 'Job_1', step ''.),Job Job_1: Step  
has an invalid task definition reference. A valid task definition reference must specify either an ID or a name and a version specification with a major version 
specified.","typeName":"Microsoft.TeamFoundation.DistributedTask.Pipelines.PipelineValidationException, 
Microsoft.TeamFoundation.DistributedTask.WebApi","typeKey":"PipelineValidationException","errorCode":0,"eventId":3000}

我通过 Installed Extensions - List REST API 调用检查了自定义任务的 registrationId。但这不是正确的。 (7f1fe94f-b811-4ba1-9d6a-b6c27de758d7)

我还手动将 自定义任务 添加到管道,并使用 Definitions - Get REST API 调用读出正确的任务引用 ID。我可以在以下位置找到 ID:

$pipeline.process.phases.steps.task.id -> 2c7efb3e-3267-4ac6-addc-86e88a6dab34


但是不手动添加自定义任务怎么读出这个id呢?

这个 id 显然是动态的,每次安装自定义任务时都会发生变化,所以必须有一种方法来获取这个引用。

每次安装自定义任务时任务id并没有改变,但他存在于任务的task.json中:

{
    "id": "2f159376-f4dk-4311-a49c-392f9d534113",
    "name": "TaskName",
    "friendlyName": "Task Name",

另一个选择是使用这个 api:

https://dev.azure.com/{organiztion}/_apis/distributedtask/tasks

您将获得所有任务的一长串列表,搜索您的任务,您将看到 ID。