mirror of
https://github.com/actions/runner-images.git
synced 2025-12-11 03:27:05 +00:00
* [ubuntu] Refactor PowerShell build scripts * Add Module import * Add Invoke-DownloadWithRetry function * Fix temp download dir * Update function to Add-GlobalEnvironmentVariable
84 lines
3.1 KiB
PowerShell
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"
|