Bir önceki yazımızda genel hatlarıyla Azure DevOps Rest API‘na erişmek için ön hazırlıklar yaptık. Bununla beraber çok basit bir request gerçekleştirerek ilgili DevOps organizasyonu içerisinden projeleri listeledik. Şimdi ise örneklerimizi biraz daha geniş düzlemde ele alalım.
Örneğimizi şu şekilde ele alalım. Azure DevOps Projesi içinde yer alan tüm Repository listesini alalım ve bunun için AzDo arayüzünden listeye şöyle bir göz atalım.
Resim-1
Serinin ilk bölümünde kullandığımız PowerShell scriptini kullanmaya devam edeceğiz. Azure DevOps API Reference sayfasına baktığımızda Repository için aşağıdaki endpointlerle karşılaşmaktayız.
Hiç vakit kaybetmeden örneğimize odaklanalım ve ilk sorgulamamızı API üzerinde gerçekleştirelim.
$OrganizationName = "hasangural" # Azure DevOps OrganizationName $ProjectName = "GBC-TerraformDemo" $AzDoToken = "PAT-TOKEN-HERE" # Azure DevOps Personal Access Token (PAT) # Authentcation Header for AzDo REST Endpoint. $AuthenicationHeader = @{Authorization = 'Basic ' + [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$AzDoToken")) } # Generating environment variables Set-Variable -Name "azDoAuthHeader" -Value $AuthenicationHeader -Scope Global -ErrorAction Stop Set-Variable -Name "azDoBaseUrl" -Value "https://dev.azure.com/$OrganizationName" -Scope Global -ErrorAction Stop $reposURI = "$azDoBaseUrl/$($ProjectName)/_apis/git/repositories?api-version=6.0" # Rest API params $restParams = @{ "URI" = $reposURI "Headers" = $azDoAuthHeader "Method" = "GET" "ErrorAction" = "Stop" } $getResponse = Invoke-RestMethod @restParams $getResponse.value | Select-Object id, name, defaultBranch
Resim-2
Resim içerisinde görüldüğü üzere mavi bölge içerisinde gördüğümüz Repository enpointi girerek REST API isteğini PowerShell ile gerçekleştirmiş bulunuyoruz. Bu sorgulamadan sonra ise ilgili Azure DevOps Projesi içerisinde bulunan tüm Repository listesini elde ediyoruz. Ayrıca property kısmını RepositoryId, Name ve defaultBranch değişkenleriyle yapılandırarak istenilen detaylı bilgileri ekrana yazdırdık.
$OrganizationName = "hasangural" # Azure DevOps OrganizationName $ProjectName = "GBC-TerraformDemo" $AzDoToken = "PAT-TOKEN-HERE" # Azure DevOps Personal Access Token (PAT) # Authentcation Header for AzDo REST Endpoint. $AuthenicationHeader = @{Authorization = 'Basic ' + [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$AzDoToken")) } # Generating environment variables Set-Variable -Name "azDoAuthHeader" -Value $AuthenicationHeader -Scope Global -ErrorAction Stop Set-Variable -Name "azDoBaseUrl" -Value "https://dev.azure.com/$OrganizationName" -Scope Global -ErrorAction Stop $reposURI = "$azDoBaseUrl/$($ProjectName)/_apis/git/repositories?api-version=6.0" # Rest API params $restParams = @{ "URI" = $reposURI "Headers" = $azDoAuthHeader "Method" = "GET" "ErrorAction" = "Stop" } $getRepos = Invoke-RestMethod @restParams ForEach ($repo in $getRepos.value) { $RepoId = $repo.id $RepoName = $repo.name $branchRequestUri = "$azDoBaseUrl/$($ProjectName)/_apis/git/repositories/$($repoId)/refs?api-version=6.0" $getOutput = Invoke-RestMethod -Uri $branchRequestUri -Method Get -Headers $azDoAuthHeader $getOutput.value | ForEach-Object { Write-Output '````````````````````````````````````````````````````````````' Write-Output "[INFO] RepositoryId: $($repoId)" Write-Output "[INFO] RepositoryName: $($RepoName)" Write-Output "[INFO] BranchName: $($_.Name)" Write-Output '````````````````````````````````````````````````````````````' } }
Yukarıdaki PowerShell script bloğunda göze çarpan en önemli şey ForEach bloklar içerisinde yaptığımız işlemlerdir. İlk başta Repository endpointini erişiyoruz ve daha sonrasında elde ettiğimizz tüm repository isimlerini `refs` endpoint’ine göndererek branch isimlerinin dönmesini sağlıyoruz.
Resim-3
Sonuç olarak aşağıdaki PowerShell konsolundaki gibi bir output elde etmemiz gerekiyor. Bu örnekleri daha farklı bir şekilde geliştirebiliriz. Örneğin, eğer bir branch 90 gündür herhangi bir commit işlemine tabii tutulmamışsa listeden silinmesi için gerekli aksiyonları alabiliriz.
Resim-4
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs: azure devops, powershell, REST API, Azure DevOps REST API