Mamy nasze projekty na poziomie produktu w Azure Devops, a na ostatniej liczbie mieliśmy 94 produkty. Potrzebuję tego, aby znaleźć sposób na tworzenie tych samych iteracji dla wszystkich projektów (dedykowanych do czasu badawczo-rozwojowego)

Używanie Postana Próbowałem tego:

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

I to jako ciało:

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

Pracował w pewnym stopniu, ponieważ stworzył itera dla mnie dla jednego projektu, ale skończyło się zagubioną w projekcie (nie pojawił się jako wymienione sprint na stronie oparte na stronie, dopóki nie poszedłem na to szukanie w ustawieniach projektu).

Czy istnieje sposób, w jaki mogę pętli przez wszystkie moje projekty Devops przy użyciu listonosza, a także jak upuścić iterację / sprint, więc jest widoczny bez konieczności śledzenia go w ustawieniach projektu?

0
MattR 11 październik 2020, 21:41

1 odpowiedź

Najlepsza odpowiedź

Czy istnieje sposób, w jaki mogę pętli przez wszystkie moje projekty Devops przy użyciu listonosza, a także jak upuścić iterację / sprint, więc jest widoczny bez konieczności śledzenia go w ustawieniach projektu?

Oto próbka 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
       
        
    }
}

Objaśnienie:

Ta próbka może przemierzać wszystkie projekty, tworzyć iteracje w tym samym czasie i wreszcie dodać iteracji zespołowi

Pierwszy reszty API jest używany do wyświetlenia nazwy projektu.

Drugi API reszta służy do tworzenia iteracji.

Trzeci API Reszta służy do dodawania iteracji do zespołu domyślnego. Wtedy można zobaczyć iterację w zaległościach.

W takim przypadku jest widoczny bez konieczności śledzenia go w ustawieniach projektu.

Aktualizacja:

Spróbuj następujący skrypt:

$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
       
        
    }
    }
}

Reszta API nie obsługuje wyłączenia projektów (na podstawie nazwy). Ale w PowerShell możesz wykluczyć te projekty, oceniając nazwę projektu.

$ExcludeList =  "Docker", "Azure"


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

Jeśli nazwa projektu znajduje się na liście, projekt nie utworzy iteracji.

0
Kevin Lu-MSFT 14 październik 2020, 06:57