Files
Cloud-20Engineering/Powershell/Lists/DevOps/RepositoriesWithTestAccept.ps1
2024-03-12 17:32:15 +01:00

92 lines
3.7 KiB
PowerShell

class Repository {
[string] $Id = ""
[string] $Name = ""
[string] $DefaultBranch = ""
[string] $IsDisabled = ""
[string] $WebUrl = ""
[string] $LastDefaultChange = ""
[string] $HasTest = ""
[string] $LastTestChange = ""
[string] $HasAccept = ""
[string] $LastAcceptChange = ""
}
[string] $url = ""
[string] $repositoryId = ""
[string] $branchName = ""
[string] $date = Get-Date -Format "yyyy-MM-dd HHmm"
$fileName = ".\$date repositories with test and accept.csv"
[string] $token = "yixqmupncd3b72zij4y5lfsenepak5rtvlba3sj33tvxvc4s7a6q" #"{INSERT_PERSONAL_ACCESS_TOKEN}"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$head = @{ Authorization =" Basic $token" }
[string] $organization = "effectory"
[string] $project = "Survey%20Software"
Write-Host "========================================================================================================================================================================"
Write-Host "Creating repository overview."
Write-Host "========================================================================================================================================================================"
$repos = az repos list --organization "https://dev.azure.com/$organization/" --project "survey software" | ConvertFrom-Json | Select-Object
[Repository[]]$Result = @()
foreach ($repo in $repos)
{
Write-Host $repo.name
[Repository] $repository = [Repository]::new()
$repository.Id = $repo.id
$repository.Name = $repo.name
$repository.DefaultBranch = $repo.defaultBranch
$repository.IsDisabled = $repo.isDisabled
$repository.WebUrl = $repo.webUrl
if ($true -ne $repo.isDisabled)
{
$repositoryId = $repo.id
$branchName = $repo.defaultBranch
$branchName = $branchName.Replace("refs/heads/", "")
try {
$url="https://dev.azure.com/$organization/$project/_apis/git/repositories/$repositoryId/commits?searchCriteria.itemVersion.version=$branchName&searchCriteria.`$top=1&api-version=6.0"
$response = Invoke-RestMethod -Uri $url -Method GET -Headers $head
$repository.LastDefaultChange = $response.value[0].committer.date
}
catch {
$repository.LastDefaultChange = ""
}
try {
$branchName = "test"
$url="https://dev.azure.com/$organization/$project/_apis/git/repositories/$repositoryId/commits?searchCriteria.itemVersion.version=$branchName&searchCriteria.`$top=1&api-version=6.0"
$response = Invoke-RestMethod -Uri $url -Method GET -Headers $head
$repository.HasTest = "True"
$repository.LastTestChange = $response.value[0].committer.date
}
catch {
$repository.HasTest = "False"
$repository.LastTestChange = ""
}
try {
$branchName = "accept"
$url="https://dev.azure.com/$organization/$project/_apis/git/repositories/$repositoryId/commits?searchCriteria.itemVersion.version=$branchName&searchCriteria.`$top=1&api-version=6.0"
$response = Invoke-RestMethod -Uri $url -Method GET -Headers $head
$repository.HasAccept = "True"
$repository.LastAcceptChange = $response.value[0].committer.date
}
catch {
$repository.HasAccept = "False"
$repository.LastAcceptChange = ""
}
}
$Result += $repository
}
$Result | Export-Csv -Path $fileName -Append -NoTypeInformation
Write-Host "========================================================================================================================================================================"
Write-Host "Done."