【问题标题】:Create iteration for all projects in the organisation为组织中的所有项目创建迭代
【发布时间】:2020-10-14 14:57:45
【问题描述】:

我们在 Azure DevOps 中有产品级别的项目,最后统计我们有 94 个产品。我需要找到一种方法,为所有项目创建相同的迭代(专门用于研发时间)

使用邮递员我试过这个:

 POST https://dev.azure.com/OrgName/Project1/_apis/wit/classificationnodes/Iterations?api-version=5.0

这是身体:

{"name": "Research and Development 2020-11-02", "attributes": {"startDate": "2020-11-02T00:00:00Z","finishDate": "2020-11-06T00:00:00Z"}}

它在一定程度上发挥了作用,因为它为我创建了一个项目的迭代,但它最终在项目中丢失了(直到我在项目设置中寻找它之前,它并没有在积压页面上显示为列出的 sprint )。

有没有一种方法可以让我使用 Postman 循环遍历我的所有 DevOps 项目,以及如何将迭代/冲刺放入其中以使其可见,而无需在项目设置中跟踪它?

【问题讨论】:

  • 嗨@KevinLu-MSFT - 我今天试过了,效果很好,谢谢。我有兴趣了解更多信息,希望您能提供帮助?如果我想排除一些项目,我会怎么做?在我今天创建的内容中,我被要求删除一对(这很好),但如果它变得太大,我不想手动执行此操作。最好的方法是指定要包含的还是要排除的(我假设排除,因为这是一个较小的数字??)
  • 嗨@MattR。我能理解你的要求。对于新的需求,我们无法直接通过rest api来实现。所以我找到了一种解决方法来实现它。根据我的测试,它可以工作。请检查更新。如果它可以满足您的要求,您可以考虑接受它作为答案。谢谢。

标签: azure post azure-devops iteration postman


【解决方案1】:

有没有一种方法可以让我使用 Postman 循环遍历我的所有 DevOps 项目,以及如何将迭代/冲刺放入其中以使其可见,而无需在项目设置中跟踪它?

这是一个 powershell 示例:

$token = "PAT"

$url="https://dev.azure.com/{Organization}/_apis/projects?api-version=6.0"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))



$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json

ForEach( $project in $response.value.name ) 
{

   
  
    $url1="https://dev.azure.com/{Organization name}/$($project)/_apis/wit/classificationnodes/Iterations?api-version=5.0"
   

    $JSON = @'
    {
      "name": "Research9", "attributes": {"startDate": "2020-11-02T00:00:00Z","finishDate": "2020-11-06T00:00:00Z"}
    }
'@

    $response1 = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON -ContentType application/json

    ForEach($id in $response1.identifier)
    {
     echo $id
     echo $project
  
    $url2="https://dev.azure.com/{Organization name}/$($project)/_apis/work/teamsettings/iterations?api-version=6.0"
   
         $body = "{
            `"id`": `"$id`"
          }"

    $response2 = Invoke-RestMethod -Uri $url2 -Headers @{Authorization = "Basic $token"} -Method Post -Body $body -ContentType application/json
       
        
    }
}

解释:

本示例可以遍历所有项目,同时创建迭代,最后将迭代加入团队

first Rest API 用于列出项目名称。

Second Rest API 用于创建迭代。

Third Rest API 用于将迭代添加到默认团队。然后你可以在 Backlogs 中看到迭代。

在这种情况下,它是可见的,无需在项目设置中跟踪。

更新:

请尝试以下脚本:

$token = "PAT"

$url="https://dev.azure.com/{Organization Name}/_apis/projects?api-version=6.0"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))



$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json

$ExcludeList =  "Docker", "Azure","ProjectNAME"


ForEach( $project in $response.value.name ) 
{


   if ($ExcludeList | Where-Object {$project -like $_}) {
     
     echo $project
     echo "No Add"
   
   }

   else{
  
    $url1="https://dev.azure.com/{Organization name}/$($project)/_apis/wit/classificationnodes/Iterations?api-version=5.0"
   

    $JSON = @'
    {
      "name": "Research10", "attributes": {"startDate": "2020-11-02T00:00:00Z","finishDate": "2020-11-06T00:00:00Z"}
    }
'@

    $response1 = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON -ContentType application/json

    ForEach($id in $response1.identifier)
    {
     echo $id
     echo $project
  
    $url2="https://dev.azure.com/{Organization Name}/$($project)/_apis/work/teamsettings/iterations?api-version=6.0"
   
         $body = "{
            `"id`": `"$id`"
          }"

    $response2 = Invoke-RestMethod -Uri $url2 -Headers @{Authorization = "Basic $token"} -Method Post -Body $body -ContentType application/json
       
        
    }
    }
}

Rest API 不支持排除项目(基于名称)。但是在Powershell中,可以通过判断项目名称来排除这些项目。

$ExcludeList =  "Docker", "Azure"


   if ($ExcludeList | Where-Object {$project -like $_}) {
     
     echo $project
     echo "No Add"
   
   }

如果项目名称在列表中,则项目不会创建迭代。

【讨论】:

  • 我今天进行了更彻底的了解(在一些项目上创建了不需要的冲刺的结果),虽然它似乎为大多数人创建了迭代,但还有一些尚未创建(使用原始运行或填充了排除列表的第二次运行)。我查看了权限,但我是组织管理员和项目集合管理员,所以我不认为是这样。你以前遇到过吗?
  • 第一个 Rest API 显示 100 个结果 - 这是它可以带回的结果的限制吗?这是否意味着我需要以不同的方式列出项目?
  • 嗨@MattR。您能否尝试将参数 $top={$top} 添加到第一个 URL。例如:https://dev.azure.com/{Organization Name}/_apis/projects?$top=300&api-version=6.0
  • @MattR。这是一张关于这个问题的票,你可以参考这个答案:stackoverflow.com/questions/64344163/…
  • 嗨凯文。再次感谢。那讲得通。我还必须添加一个 `(我在您共享的链接上看到了),但该参数正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 2019-01-10
  • 2023-03-25
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 2022-11-14
  • 1970-01-01
相关资源
最近更新 更多