-
Notifications
You must be signed in to change notification settings - Fork 127
/
MigrateVariableSetVariablesToProject.ps1
40 lines (33 loc) · 1.63 KB
/
MigrateVariableSetVariablesToProject.ps1
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
$baseUri = "http://octopus.url" # <-- Update this to the base URL to your Octopus server(i.e. not including 'app' or 'api'
$apiKey = "API-xxxxxxxxxxxxxxxxxxxxxxxxxx" # <-- Update this to your API key
$headers = @{"X-Octopus-ApiKey" = $apiKey}
$libraryVariableSetId = "LibraryVariableSets-1" # <-- Update this to the Id of your variable set
$projectName = "ProejctName" # <-- Update this to the name of your project
function Get-OctopusResource([string]$uri) {
Write-Host "[GET]: $uri"
return Invoke-RestMethod -Method Get -Uri "$baseUri/$uri" -Headers $headers
}
function Put-OctopusResource([string]$uri, [object]$resource) {
Write-Host "[PUT]: $uri"
#Write-Output $resource | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Put -Uri "$baseUri/$uri" -Body $($resource | ConvertTo-Json -Depth 10) -Headers $headers
}
$libVarSet = Get-OctopusResource "api/libraryvariablesets/$libraryVariableSetId"
#Write-Output $libVarSet | ConvertTo-Json -Depth 10
$varSet = Get-OctopusResource "api/variables/$($libVarSet.VariableSetId)"
#Write-Output $varSet | ConvertTo-Json -Depth 10
$project = Get-OctopusResource "api/projects/$projectName"
#Write-Output $project | ConvertTo-Json -Depth 10
$projVar = Get-OctopusResource "api/variables/$($project.VariableSetId)"
#Write-Output $projVar | ConvertTo-Json -Depth 10
$varSet.Variables | % {
if($_.IsSensitive) {
$_.Value = ""
}
$projVar.Variables += $_
}
#Write-Host "Library Variable Set variables"
#Write-Output $varSet.Variables | Format-List
#Write-Host "Variables"
#Write-Output $projVar.Variables | Format-List
Put-OctopusResource "api/variables/$($projVar.Id)" $projVar