-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNew-AzDevOpsServiceConnection.ps1
More file actions
121 lines (102 loc) · 3.6 KB
/
New-AzDevOpsServiceConnection.ps1
File metadata and controls
121 lines (102 loc) · 3.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
param (
[Parameter(mandatory=$true)]
[string]$serviceConnName,
[Parameter(mandatory=$true)]
[string]$vercodeApiId,
[Parameter(mandatory=$true)]
[string]$veracodeApiKey,
[Parameter(mandatory=$true)]
[string]$orgName,
[Parameter(mandatory=$true)]
[string]$projectName,
[Parameter(mandatory=$true)]
[string]$token
)
function New-AzDevOpsServiceConnection
{
[CmdletBinding()]
param
(
[Parameter(mandatory=$true)]
[string]$serviceConnName,
[Parameter(mandatory=$true)]
[string]$vercodeApiId,
[Parameter(mandatory=$true)]
[string]$veracodeApiKey,
[Parameter(mandatory=$true)]
[string]$orgName,
[Parameter(mandatory=$true)]
[string]$projectName,
[Parameter(mandatory=$true)]
[string]$token
)
# create headers
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"));
$headers = @{Authorization = "Basic $token"};
# list target projects
try
{
$listProjectsUri = "https://dev.azure.com/$($orgName)/_apis/projects?api-version=6.1-preview.4";
$res = Invoke-WebRequest -Uri $listProjectsUri -Method GET -Headers $headers;
$resObj = $res.content | ConvertFrom-Json;
$thisProject = $resObj.value | ? { $_.Name -like "*$projectName*"};
}
catch [Exception]
{
throw "Unable to list the Azure DevOps Projects in the organization.";
}
# create service connection
try
{
$createEndpointUri = "https://dev.azure.com/$($orgName)/_apis/serviceendpoint/endpoints?api-version=6.0-preview.4";
$body = @"
{
"administratorsGroup": null,
"authorization": {
"parameters": {
"apitoken": "$vercodeApiId",
"vkey": "$veracodeApiKey"
},
"scheme": "Token"
},
"data": {},
"description": "Veracode",
"groupScopeId": null,
"isReady": true,
"isShared": false,
"name": "$serviceConnName",
"operationStatus": null,
"owner": "Library",
"readersGroup": null,
"serviceEndpointProjectReferences": [
{
"description": "Veracode",
"name": "$serviceConnName",
"projectReference": {
"id": "$($thisProject.id)",
"name": "$projectName"
}
}
],
"type": "VeracodeAnalysisCenterEndpoint",
"url": "https://analysiscenter.veracode.com/"
}
"@;
$endpointRes = Invoke-WebRequest -Uri $createEndpointUri -Headers $headers -Method POST -Body $Body -ContentType "application/json";
}
catch [Exception]
{
throw "Error occured creating the service connection in the $projectName project. $($endpointRes.statuscode)";
}
# output
if ($endpointRes.StatusCode -eq 200)
{
Write-Output "Service Connection Creation Successfull!";
return $($endpointRes.Content | ConvertFrom-Json);
}
else
{
throw "Error occured creating the service connection in the $projectName project.";
}
}
New-AzDevOpsServiceConnection -serviceConnName $serviceConnName -vercodeApiId $vercodeApiId -veracodeApiKey $veracodeApiKey -orgName $orgName -projectName $projectName -token $token;