首页 > 解决方案 > Azure DevOps - 获取自定义任务参考 ID

问题描述

我想使用定义更新REST API 调用来更新管道。

这很好,但是当我想添加一个自定义任务(自制构建管道任务扩展)时,我努力寻找正确的任务参考 id

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

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

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

在此处输入图像描述


但是如何在不手动添加自定义任务的情况下读出这个 id?

这个 id 显然是动态的,并且每次安装自定义任务时都会更改,因此必须有一种方法来获取此引用。

标签: azure-devopsazure-devops-rest-api

解决方案


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

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

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

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

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


推荐阅读