You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/enos/modules/aws_windows_client/scripts/setup.ps1

111 lines
3.9 KiB

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1
# Unzip Boundary CLI to the same directory
Write-Host "Unzipping Boundary CLI..."
$destination = Split-Path -Path ${boundary_cli_zip_path}
Expand-Archive -Path ${boundary_cli_zip_path} -DestinationPath $destination -Force
# Unzip boundary src to new directory
Write-Host "Unzipping Boundary source code..."
$base = [System.IO.Path]::GetFileNameWithoutExtension("${boundary_src_zip_path}")
$src_destination = Join-Path (Split-Path ${boundary_src_zip_path}) $base
Expand-Archive -Path ${boundary_src_zip_path} -DestinationPath $src_destination -Force
# Add Boundary CLI to PATH
$existingPath = [Environment]::GetEnvironmentVariable(
"Path",
[EnvironmentVariableTarget]::Machine
)
$newPath = $existingPath + ";" + $destination
[Environment]::SetEnvironmentVariable(
"Path",
$newPath,
[EnvironmentVariableTarget]::Machine
)
Write-Host "Checking if Vault needs to be installed..."
if ("${vault_version}" -ne "") {
Write-Host "Installing Vault version ${vault_version}..."
# Download and install Vault
$vaultZipUrl = "https://releases.hashicorp.com/vault/${vault_version}/vault_${vault_version}_windows_amd64.zip"
$vaultZipPath = Join-Path $destination "vault.zip"
curl.exe -L -o $vaultZipPath $vaultZipUrl
Expand-Archive -Path $vaultZipPath -DestinationPath $destination -Force
}
# Install chocolatey (package manager)
powershell -c "irm https://community.chocolatey.org/install.ps1|iex"
# Refreshes env to get choco on path
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
$env:ChocolateyInstall = Convert-Path "$((Get-Command choco).Path)\..\.."
Import-Module "$env:ChocolateyInstall/helpers/chocolateyInstaller.psm1"
refreshenv
# install mremoteng
choco install mremoteng -y
# install dependencies for rdp automated tests
choco install golang -y --version ${go_version}
refreshenv
choco install git -y
refreshenv
choco install mingw -y
refreshenv
# needs cmake >3.7 and <4.0
choco install cmake --version 3.31.8 -y
refreshenv
# Set the github token if provided
Write-Host "Checking if GitHub token is provided..."
if ("${github_token}" -ne "") {
# configure git to be able to download from private repos
git config --system url."https://oauth2:${github_token}@github.com".insteadOf "https://github.com"
# download opencv artifact if available
Write-Host "Downloading OpenCV artifact.."
[Environment]::SetEnvironmentVariable("GITHUB_TOKEN", "${github_token}", [EnvironmentVariableTarget]::Machine)
choco install gh -y
refreshenv
$repo = "hashicorp/boundary-enterprise"
$workflow = "build-opencv-ent.yml"
$branch = "main"
$artifactName = "opencv-windows"
$run = gh run list --repo $repo --workflow=$workflow --branch=$branch --status success --limit 1 --json databaseId | ConvertFrom-Json
if (-not $run -or -not $run[0].databaseId) {
Write-Error "Could not find a workflow run for $workflow in $repo."
exit 1
}
Write-Host "Found workflow run: $($run[0])"
$run_id = $run[0].databaseId
New-Item -ItemType Directory -Path "C:/opencv/build" -Force
$downloadResult = gh run download $run_id --repo $repo -n $artifactName --dir C:/opencv/build
if ($LASTEXITCODE -ne 0) {
Write-Error "Failed to download artifact $artifactName from workflow run $run_id."
exit 1
}
# add opencv to path
$existingPath = [Environment]::GetEnvironmentVariable(
"Path",
[EnvironmentVariableTarget]::Machine
)
$newPath = $existingPath + ";C:\opencv\build\install\x64\mingw\bin;"
[Environment]::SetEnvironmentVariable(
"Path",
$newPath,
[EnvironmentVariableTarget]::Machine
)
# go mod download
Write-Host "Downloading Go modules at $src_destination..."
cd $src_destination
go mod download
}