Files
runner-images/images/ubuntu/scripts/build/Configure-Toolset.ps1
Shamil Mubarakshin e9057a22fc [ubuntu] Refactor PowerShell build scripts (#9064)
* [ubuntu] Refactor PowerShell build scripts

* Add Module import

* Add Invoke-DownloadWithRetry function

* Fix temp download dir

* Update function to Add-GlobalEnvironmentVariable
2023-12-27 18:39:58 +01:00

84 lines
3.1 KiB
PowerShell

################################################################################
## File: Configure-Toolset.ps1
## Team: CI-Build
## Desc: Configure toolset
################################################################################
Import-Module "$env:HELPER_SCRIPTS/../tests/Helpers.psm1"
function Get-TCToolVersionPath {
param(
[Parameter(Mandatory)]
[string] $ToolName,
[Parameter(Mandatory)]
[string] $ToolVersion,
[Parameter(Mandatory)]
[string] $ToolArchitecture
)
$toolPath = Join-Path -Path $env:AGENT_TOOLSDIRECTORY -ChildPath $ToolName
$toolPathVersion = Join-Path -Path $toolPath -ChildPath $ToolVersion
$foundVersion = Get-Item $toolPathVersion | Sort-Object -Property { [version] $_.name } -Descending | Select-Object -First 1
$installationDir = Join-Path -Path $foundVersion -ChildPath $ToolArchitecture
return $installationDir
}
function Add-GlobalEnvironmentVariable {
param(
[Parameter(Mandatory)]
[string] $Name,
[Parameter(Mandatory)]
[string] $Value,
[string] $FilePath = "/etc/environment"
)
$envVar = "{0}={1}" -f $Name, $Value
Tee-Object -InputObject $envVar -FilePath $FilePath -Append
}
$ErrorActionPreference = "Stop"
Write-Host "Configure toolcache tools environment..."
$toolEnvConfigs = @{
go = @{
command = "ln -s {0}/bin/* /usr/bin/"
variableTemplate = "GOROOT_{0}_{1}_X64"
}
}
# Get toolcache content from toolset
$tools = (Get-ToolsetContent).toolcache | Where-Object { $toolEnvConfigs.Keys -contains $_.name }
foreach ($tool in $tools) {
$toolEnvConfig = $toolEnvConfigs[$tool.name]
if (-not ([string]::IsNullOrEmpty($toolEnvConfig.variableTemplate))) {
foreach ($toolVersion in $tool.versions) {
Write-Host "Set $($tool.name) $toolVersion environment variable..."
$toolPath = Get-TCToolVersionPath -ToolName $tool.name -ToolVersion $toolVersion -ToolArchitecture $tool.arch
$envVariableName = $toolEnvConfig.variableTemplate -f $toolVersion.split(".")
Add-GlobalEnvironmentVariable -Name $envVariableName -Value $toolPath
}
}
# Invoke command and add env variable for the default tool version
if (-not ([string]::IsNullOrEmpty($tool.default))) {
$toolDefaultPath = Get-TCToolVersionPath -ToolName $tool.name -ToolVersion $tool.default -ToolArchitecture $tool.arch
if (-not ([string]::IsNullOrEmpty($toolEnvConfig.defaultVariable))) {
Write-Host "Set default $($toolEnvConfig.defaultVariable) for $($tool.name) $($tool.default) environment variable..."
Add-GlobalEnvironmentVariable -Name $toolEnvConfig.defaultVariable -Value $toolDefaultPath
}
if (-not ([string]::IsNullOrEmpty($toolEnvConfig.command))) {
$command = $toolEnvConfig.command -f $toolDefaultPath
Write-Host "Invoke $command command for default $($tool.name) $($tool.default) ..."
Invoke-Expression -Command $command
}
}
}
Invoke-PesterTests -TestFile "Toolset" -TestName "Toolset"