【问题标题】:Azure Devops bulk create Tasks for every Product Backlog ItemAzure Devops 为每个产品待办事项项目批量创建任务
【发布时间】:2022-08-18 10:28:03
【问题描述】:

我在 Azure DevOps 中有 100 个 PBI(假设它们被命名为 001-100)。 每个 PBI 都应该有任务 A 和 B 的克隆作为子链接。 如何在一个操作中将这些基础任务分配给所有 100 个 PBI,而无需手动复制任务并将它们分配给所有 PBI?

我已经尝试从 PBI 创建一个模板,并且已经定义了他们的子 A\'en B\',但是这些子链接不会通过模板传递到另一个现有的 PBI。

积压中的首选结果

FeatureX
  -001
    -A\' 
    -B\' 
  -002
    -A\'
    -B\'
  -003
    -A\'
    -B\'
etc...

    标签: azure-devops


    【解决方案1】:

    如何在一个操作中将这些基础任务分配给所有 100 个 PBI,而无需手动复制任务并将它们分配给所有 PBI?

    您可以使用 PowerShell 脚本创建克隆的工作项,然后将新创建的工作项链接到产品待办事项项。

    这是一个 PowerShell 示例:

    $token = "PAT"
    
    $url="https://dev.azure.com/ORG/_apis/wit/wiql?api-version=5.1"
    
    $token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
    
    $JSON = @'
    {
       "query": "SELECT [System.Id], [System.WorkItemType],  [System.State],[System.AreaPath],[System.Tags],[System.CommentCount],[System.ChangedDate] FROM workitems WHERE [System.TeamProject] = 'projectname' AND [System.WorkItemType] = 'Product Backlog item' ORDER BY [System.ChangedDate] DESC"
    }
    '@
    
    $response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON -ContentType application/json
    
    ForEach ($workitemid in $response.workitems.id)
    {
       echo $workitemid
       $witType="task"
       $url2= "https://dev.azure.com/org/project/_apis/wit/workitems/`$$($witType)?api-version=6.0"
       $JSON2 = @'
      [
      {
        "op": "add",
        "path": "/fields/System.Title",
        "from": null,
        "value": "Sample task"
      }
    ]
    '@
     $response2 = Invoke-RestMethod -Uri $url2 -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON2 -ContentType application/json-patch+json
    
     $ClonetaskAID= $response2.id
    
     $url3= "https://dev.azure.com/org/project/_apis/wit/workitems/`$$($witType)?api-version=6.0"
       $JSON3 = @'
      [
      {
        "op": "add",
        "path": "/fields/System.Title",
        "from": null,
        "value": "Sample task"
      }
    ]
    '@
     $response3 = Invoke-RestMethod -Uri $url3 -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON3 -ContentType application/json-patch+json
    
     $ClonetaskBID= $response3.id
    
    
       $url1 ="https://dev.azure.com/org/_apis/wit/workitems/$($workitemid)?api-version=6.0"
       $JSON1 = "
       [
     
        {
        `"op`": `"add`",
        `"path`": `"/relations/-`",
        `"value`": {
          `"rel`": `"System.LinkTypes.Hierarchy-Forward`",
          `"url`": `"https://dev.azure.com/org/_apis/wit/workItems/$ClonetaskAID`"
        }
        },
       {
        `"op`": `"add`",
        `"path`": `"/relations/-`",
        `"value`": {
          `"rel`": `"System.LinkTypes.Hierarchy-Forward`",
          `"url`": `"https://dev.azure.com/org/_apis/wit/workItems/$ClonetaskBID`"
        }
        }
    
    ]
    "
    $response1 = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method PATCH -Body $JSON1 -ContentType application/json-patch+json
    }
    

    您可以使用 WIQL Rest API:Wiql - Query By Wiql 获取所有工作项。

    然后您可以根据任务 A 和 B 创建工作项。Rest API:Work Items - Create

    最后,您可以将工作项链接到 PBI。休息 API:Work Items - Update

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 2020-03-16
      • 1970-01-01
      • 2012-11-29
      • 2011-09-23
      • 1970-01-01
      相关资源
      最近更新 更多