Private/Configure-AzureDevOps.ps1
function Install-DevOps { $message = "Connecting to Azure DevOps Organisation" if ($adoOrg -eq "") { do { Write-Host "Enter the <NAME> of your Azure DevOps Organisation only the NAME - not the full path!" $adoOrg = Read-Host -Prompt "Depending on your instance, either dev.azure.com/<NAME> or <NAME>.visualstudio.com" }until ($adoOrg -ne "") } $global:devops_projectFile.ADOOrgName = $adoOrg $global:devops_projectFile | ConvertTo-Json | Set-Content ("$global:devops_projectLocation\$global:devops_gitRepo.json") #Get Azure Accounts / Subscriptions $AZAccounts = az account list | ConvertFrom-Json if (!($global:devops_selectedSubscription -ne "" -and (($AZAccounts | ForEach-Object { $_.id }) -contains $global:devops_selectedSubscription))) { if ($AZAccounts.Length -eq 0) { Write-Host "No Accounts Found, please login" az login --use-device-code --allow-no-subscriptions $AZAccounts = az account list | ConvertFrom-Json Display-AzureAccounts } else { Display-AzureAccounts } } Write-Host "Azure Subscription - $global:devops_selectedSubscriptionName" $global:devops_projectFile.selectedSubscription = $global:devops_selectedSubscription $global:devops_projectFile.selectedSubscriptionName = $global:devops_selectedSubscriptionName az account set --subscription $global:devops_selectedSubscription Write-Host "" [console]::ForegroundColor = "White" if ($adoProject -ne "") { $azproj = az devops project show --organization https://dev.azure.com/$adoOrg --project $adoProject | ConvertFrom-Json [console]::ForegroundColor = "White" } if ($adoProject -eq "" -or !$azproj.url) { $msg = "Select existing or Create a new Azure DevOps Project" do { $sel = Invoke-Menu -MenuTitle "----$msg ------" -MenuOptions "Select", "Create", "Quit" } until ($sel -ge 0) if ($sel -eq 2) { return } if ($sel -eq 1) { if ($adoProject -eq "") { do { $adoProject = Read-Host -Prompt "Please enter the Name of the Project you wish to Create" }until ($adoProject -ne "") } $adoProject = $adoProject.Replace(" ", "") $global:devops_projectFile.ADOProject = $adoProject $message = "Creating DevOps Project $adoProject" Write-Host $message $output = az devops project create --name $adoProject --organization=https://dev.azure.com/$adoOrg --process Scrum if (!$output) { $global:devops_projectFile.ADOConfigured = "Error" } else { $adoCreate = $true } } else { $selection = az devops project list --organization=https://dev.azure.com/$adoOrg --query '[value][].{Name:name}' --output json | Out-String | ConvertFrom-Json $options = $selection | ForEach-Object { "$($_.Name)" } do { $sel = Invoke-Menu -MenuTitle "---- Select the Project you wish to Use ------" -MenuOptions $options $adoProject = $selection[$sel].Name } until ($adoProject -ne "") $global:devops_projectFile.ADOProject = $adoProject } $global:devops_projectFile | ConvertTo-Json | Set-Content ("$global:devops_projectLocation\$global:devops_gitRepo.json") } if (($adoRepo -eq $adoProject) -and $adoCreate) { $repo = az repos show --repository $adoRepo | Out-String | ConvertFrom-Json } else { Write-Host "" #Check for blank repo if ($adoRepo -eq "") { do { $adoRepo = Read-Host -Prompt "Please enter a Name for the Git Repository you wish to Create" }until ($adoRepo -ne "") } $message = "Creating Git Repo $adoRepo" Write-Host $message $repo = az repos create --name $adoRepo --project $adoProject --organization=https://dev.azure.com/$adoOrg | Out-String | ConvertFrom-Json if (!$repo.WebUrl) { $global:devops_projectFile.ADOConfigured = "Error" $global:devops_projectFile.gitRepo = "" $global:devops_projectFile | ConvertTo-Json | Set-Content ("$global:devops_projectLocation\$global:devops_gitRepo.json") Throw "Error" } else { $global:devops_projectFile.gitRepo = $adoRepo } } #Get Access Token $azureDevopsResourceId = "499b84ac-1321-427f-aa17-267ca6975798" $token = az account get-access-token --resource $azureDevopsResourceId | ConvertFrom-Json $authValue = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":" + $token.accessToken)) git remote remove origin git remote add origin $repo.webUrl $REPO_URL = $repo.webUrl git config http.$REPO_URL.extraHeader "Authorization:Basic $authValue" git add -A git commit -m "Initial Commit" git push --set-upstream origin master az repos show --repository $repo.id --open pause } function Invoke-AzureDevOps { $adoOrg = $global:devops_projectFile.ADOOrgName $adoProject = $global:devops_projectFile.ADOProject $adoRepo = $global:devops_projectFile.gitRepo.Replace(' ', '') try { if ($adoProject -eq "" -or $adoRepo -eq "" -or $adoOrg -eq "") { Install-DevOps $global:devops_projectFile.ADOConfigured = "True" $global:devops_projectFile | ConvertTo-Json | Set-Content ("$global:devops_projectLocation\$global:devops_gitRepo.json") } else { Write-Host Azure DevOps is already configured pause } } catch { $global:devops_projectFile.ADOConfigured = "Error" $global:devops_projectFile | ConvertTo-Json | Set-Content ("$global:devops_projectLocation\$global:devops_gitRepo.json") pause } } |