mirror of
https://github.com/actions/runner-images.git
synced 2025-12-18 15:57:17 +00:00
Fix documentation for Python and Ruby on Windows images (#478)
* Remove separate Python installation for Windows * Remove Python2 symlink creation * Move install-ruby and install-python to download-toolcache * Improve download-toolcache for windows * Small fix in docs for ruby * V mapetr/test alt toolcache docs (#8) * Merge Validate-Ruby and Validate-Python with Validate-Toolcache * Small fix in output * Small fix in download toolcache output
This commit is contained in:
@@ -323,12 +323,6 @@
|
|||||||
"{{ template_dir }}/scripts/Installers/Download-ToolCache.ps1"
|
"{{ template_dir }}/scripts/Installers/Download-ToolCache.ps1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "powershell",
|
|
||||||
"scripts":[
|
|
||||||
"{{ template_dir }}/scripts/Installers/Windows2016/Install-Python.ps1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "powershell",
|
"type": "powershell",
|
||||||
"scripts":[
|
"scripts":[
|
||||||
@@ -357,12 +351,6 @@
|
|||||||
"{{ template_dir }}/scripts/Installers/Install-PHP.ps1"
|
"{{ template_dir }}/scripts/Installers/Install-PHP.ps1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "powershell",
|
|
||||||
"scripts":[
|
|
||||||
"{{ template_dir }}/scripts/Installers/Install-Ruby.ps1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "powershell",
|
"type": "powershell",
|
||||||
"scripts":[
|
"scripts":[
|
||||||
@@ -632,12 +620,6 @@
|
|||||||
"{{ template_dir }}/scripts/Installers/Validate-ToolCache.ps1"
|
"{{ template_dir }}/scripts/Installers/Validate-ToolCache.ps1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "powershell",
|
|
||||||
"scripts":[
|
|
||||||
"{{ template_dir }}/scripts/Installers/Validate-Python.ps1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "powershell",
|
"type": "powershell",
|
||||||
"scripts":[
|
"scripts":[
|
||||||
@@ -676,12 +658,6 @@
|
|||||||
"{{ template_dir }}/scripts/Installers/Validate-PHP.ps1"
|
"{{ template_dir }}/scripts/Installers/Validate-PHP.ps1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "powershell",
|
|
||||||
"scripts":[
|
|
||||||
"{{ template_dir }}/scripts/Installers/Validate-Ruby.ps1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "powershell",
|
"type": "powershell",
|
||||||
"scripts":[
|
"scripts":[
|
||||||
|
|||||||
@@ -298,12 +298,6 @@
|
|||||||
"{{ template_dir }}/scripts/Installers/Download-ToolCache.ps1"
|
"{{ template_dir }}/scripts/Installers/Download-ToolCache.ps1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "powershell",
|
|
||||||
"scripts":[
|
|
||||||
"{{ template_dir }}/scripts/Installers/Windows2019/Install-Python.ps1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "powershell",
|
"type": "powershell",
|
||||||
"scripts":[
|
"scripts":[
|
||||||
@@ -332,12 +326,6 @@
|
|||||||
"{{ template_dir }}/scripts/Installers/Install-PHP.ps1"
|
"{{ template_dir }}/scripts/Installers/Install-PHP.ps1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "powershell",
|
|
||||||
"scripts":[
|
|
||||||
"{{ template_dir }}/scripts/Installers/Install-Ruby.ps1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "powershell",
|
"type": "powershell",
|
||||||
"scripts":[
|
"scripts":[
|
||||||
@@ -619,12 +607,6 @@
|
|||||||
"{{ template_dir }}/scripts/Installers/Validate-ToolCache.ps1"
|
"{{ template_dir }}/scripts/Installers/Validate-ToolCache.ps1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "powershell",
|
|
||||||
"scripts":[
|
|
||||||
"{{ template_dir }}/scripts/Installers/Validate-Python.ps1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "powershell",
|
"type": "powershell",
|
||||||
"scripts":[
|
"scripts":[
|
||||||
@@ -663,12 +645,6 @@
|
|||||||
"{{ template_dir }}/scripts/Installers/Validate-PHP.ps1"
|
"{{ template_dir }}/scripts/Installers/Validate-PHP.ps1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "powershell",
|
|
||||||
"scripts":[
|
|
||||||
"{{ template_dir }}/scripts/Installers/Validate-Ruby.ps1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "powershell",
|
"type": "powershell",
|
||||||
"scripts":[
|
"scripts":[
|
||||||
|
|||||||
@@ -44,6 +44,39 @@ Function NPMFeed-AuthSetup {
|
|||||||
$npmrcContent | Out-File -FilePath "$($env:TEMP)/.npmrc" -Encoding utf8
|
$npmrcContent | Out-File -FilePath "$($env:TEMP)/.npmrc" -Encoding utf8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Function Set-DefaultPythonVersion {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory=$true)]
|
||||||
|
[System.Version] $Version,
|
||||||
|
[System.String] $Arch = "x64"
|
||||||
|
)
|
||||||
|
|
||||||
|
$pythonPath = $Env:AGENT_TOOLSDIRECTORY + "/Python/${Version}*/${Arch}"
|
||||||
|
$pythonDir = Get-Item -Path $pythonPath
|
||||||
|
|
||||||
|
Write-Host "Use Python ${Version} as a system Python"
|
||||||
|
Add-MachinePathItem -PathItem $pythonDir.FullName
|
||||||
|
Add-MachinePathItem -PathItem "$($pythonDir.FullName)\Scripts"
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Set-DefaultRubyVersion {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory=$true)]
|
||||||
|
[System.Version] $Version,
|
||||||
|
[System.String] $Arch = "x64"
|
||||||
|
)
|
||||||
|
$rubyPath = $Env:AGENT_TOOLSDIRECTORY + "/Ruby/${Version}*/${Arch}/bin"
|
||||||
|
$rubyDir = Get-Item -Path $rubyPath
|
||||||
|
|
||||||
|
Write-Host "Use Ruby ${Version} as a system Ruby"
|
||||||
|
Add-MachinePathItem -PathItem $rubyDir.FullName
|
||||||
|
|
||||||
|
# Update ruby gem to latest version
|
||||||
|
gem update --system
|
||||||
|
}
|
||||||
|
|
||||||
|
Import-Module -Name ImageHelpers -Force
|
||||||
|
|
||||||
$FeedPrefix = "https://npm.pkg.github.com"
|
$FeedPrefix = "https://npm.pkg.github.com"
|
||||||
$AccessToken = $env:GITHUB_FEED_TOKEN
|
$AccessToken = $env:GITHUB_FEED_TOKEN
|
||||||
|
|
||||||
@@ -71,7 +104,5 @@ $ToolVersions.PSObject.Properties | ForEach-Object {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#junction point from the previous Python2 directory to the toolcache Python2
|
Set-DefaultPythonVersion -Version "3.7"
|
||||||
Write-Host "Create symlink to Python2"
|
Set-DefaultRubyVersion -Version "2.5"
|
||||||
$python2Dir = (Get-Item -Path ($ToolsDirectory + '/Python/2.7*/x64')).FullName
|
|
||||||
cmd.exe /c mklink /d "C:\Python27amd64" "$python2Dir"
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
## File: Install-Ruby.ps1
|
|
||||||
## Desc: Install Ruby for Windows
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
Import-Module -Name ImageHelpers
|
|
||||||
|
|
||||||
# Ruby versions are already available in the tool cache.
|
|
||||||
|
|
||||||
# Tool cache Ruby Path
|
|
||||||
$toolcacheRubyPath = 'C:\hostedtoolcache\windows\Ruby\2.5.*'
|
|
||||||
|
|
||||||
# Get Latest Ruby 2.5.x
|
|
||||||
$latestRubyBinPath2_5 = Get-ChildItem -Path $toolcacheRubyPath | Sort-Object {[System.Version]$_.Name} | Select-Object -Last 1 | ForEach-Object {
|
|
||||||
Join-Path $_.FullName 'x64\bin'
|
|
||||||
}
|
|
||||||
|
|
||||||
Add-MachinePathItem $latestRubyBinPath2_5
|
|
||||||
$env:Path = Get-MachinePath
|
|
||||||
|
|
||||||
# Update ruby gem to latest version
|
|
||||||
gem update --system
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
## File: Validate-Python.ps1
|
|
||||||
## Desc: Configure python on path based on what is installed in the tools cache
|
|
||||||
## Must run after tools cache is downloaded and validated
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
if(Get-Command -Name 'python')
|
|
||||||
{
|
|
||||||
Write-Host "Python $(& python -V 2>&1) on path"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Write-Host "Python is not on path"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
$Python3Version = $(& python -V 2>&1)
|
|
||||||
|
|
||||||
if ($Python3Version -notlike "Python 3.*")
|
|
||||||
{
|
|
||||||
Write-Error "Python 3 is not in the PATH"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$python2path = $Env:AGENT_TOOLSDIRECTORY + '/Python/2.7*/x64'
|
|
||||||
$python2Dir = Get-Item -Path $python2path
|
|
||||||
|
|
||||||
$env:Path = $python2Dir.FullName + ";" + $env:Path
|
|
||||||
|
|
||||||
$Python2Version = & $env:comspec "/s /c python --version 2>&1"
|
|
||||||
|
|
||||||
# Adding description of the software to Markdown
|
|
||||||
$SoftwareName = "Python (64 bit)"
|
|
||||||
|
|
||||||
$Description = @"
|
|
||||||
#### $Python3Version
|
|
||||||
_Environment:_
|
|
||||||
* PATH: contains location of python.exe
|
|
||||||
|
|
||||||
#### $Python2Version
|
|
||||||
|
|
||||||
_Location:_ $Python2Path
|
|
||||||
"@
|
|
||||||
|
|
||||||
Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
## File: Validate-Ruby.ps1
|
|
||||||
## Desc: Verify that Ruby is on the path and output version information.
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Function that gets the version of Ruby at the specified path
|
|
||||||
function Get-RubyVersion
|
|
||||||
{
|
|
||||||
Param
|
|
||||||
(
|
|
||||||
[String]$rubyRootPath
|
|
||||||
)
|
|
||||||
|
|
||||||
# Prepend to the path like: C:\hostedtoolcache\windows\Ruby\2.5.0\x64\bin
|
|
||||||
$env:Path = "$rubyRootPath;" + $env:Path
|
|
||||||
|
|
||||||
# Extract the version from Ruby output like: ruby 2.5.1p57 (2018-03-29 revision 63029) [x64-mingw32]
|
|
||||||
if( $(ruby --version) -match 'ruby (?<version>.*) \(.*' )
|
|
||||||
{
|
|
||||||
$rubyVersion = $Matches.version
|
|
||||||
return $rubyVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "Unable to determine Ruby version at " + $rubyRootPath
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Verify that ruby is on the path
|
|
||||||
if(Get-Command -Name 'ruby')
|
|
||||||
{
|
|
||||||
Write-Host "$(ruby --version) is on the path."
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Write-Host "Ruby is not on the path."
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Default Ruby Version on Path
|
|
||||||
$rubyExeOnPath = (Get-Command -Name 'ruby').Path
|
|
||||||
$rubyBinOnPath = Split-Path -Path $rubyExeOnPath
|
|
||||||
$rubyVersionOnPath = Get-RubyVersion -rubyRootPath $rubyBinOnPath
|
|
||||||
$gemVersion = & gem -v
|
|
||||||
|
|
||||||
# Add details of available versions in Markdown
|
|
||||||
$SoftwareName = "Ruby (x64)"
|
|
||||||
$Description = @"
|
|
||||||
#### $rubyVersionOnPath
|
|
||||||
_Environment:_
|
|
||||||
* Location: $rubyBinOnPath
|
|
||||||
* PATH: contains the location of ruby.exe version $rubyVersionOnPath
|
|
||||||
* Gem Version: $gemVersion
|
|
||||||
"@
|
|
||||||
|
|
||||||
Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description
|
|
||||||
@@ -63,6 +63,78 @@ function RunTestsByPath {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Get-SystemDefaultPython {
|
||||||
|
Write-Host "Validate system Python..."
|
||||||
|
|
||||||
|
if (Get-Command -Name 'python')
|
||||||
|
{
|
||||||
|
Write-Host "Python $(& python -V 2>&1) on path"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Host "Python is not on path"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$pythonBinVersion = $(& python -V 2>&1)
|
||||||
|
if ($pythonBinVersion -notlike "Python 3.*")
|
||||||
|
{
|
||||||
|
Write-Error "Python 3 is not in the PATH"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$pythonBinOnPath = Split-Path -Path (Get-Command -Name 'python').Path
|
||||||
|
$description = GetDefaultToolDescription -SoftwareVersion $pythonBinVersion -SoftwareLocation $pythonBinOnPath
|
||||||
|
|
||||||
|
return $description
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-SystemDefaultRuby {
|
||||||
|
Write-Host "Validate system Ruby..."
|
||||||
|
|
||||||
|
if (Get-Command -Name 'ruby')
|
||||||
|
{
|
||||||
|
Write-Host "$(ruby --version) is on the path."
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Host "Ruby is not on the path."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$rubyBinOnPath = Split-Path -Path (Get-Command -Name 'ruby').Path
|
||||||
|
if ( $(ruby --version) -notmatch 'ruby (?<version>.*) \(.*' )
|
||||||
|
{
|
||||||
|
Write-Host "Unable to determine Ruby version at " + $rubyBinOnPath
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$rubyVersionOnPath = "Ruby $($Matches.version)"
|
||||||
|
$description = GetDefaultToolDescription -SoftwareVersion $rubyVersionOnPath -SoftwareLocation $rubyBinOnPath
|
||||||
|
|
||||||
|
$gemVersion = & gem -v
|
||||||
|
$description += "* Gem Version: $gemVersion<br/>"
|
||||||
|
|
||||||
|
return $description
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetDefaultToolDescription {
|
||||||
|
param (
|
||||||
|
[Parameter(Mandatory = $True)]
|
||||||
|
[string]$SoftwareVersion,
|
||||||
|
[Parameter(Mandatory = $True)]
|
||||||
|
[string]$SoftwareLocation
|
||||||
|
)
|
||||||
|
|
||||||
|
$description = "<br/>__System default version:__ $SoftwareVersion<br/>"
|
||||||
|
$description += "_Environment:_<br/>"
|
||||||
|
$description += "* Location: $SoftwareLocation<br/>"
|
||||||
|
$description += "* PATH: contains the location of $SoftwareVersion<br/>"
|
||||||
|
|
||||||
|
return $description
|
||||||
|
}
|
||||||
|
|
||||||
function GetMarkdownDescription {
|
function GetMarkdownDescription {
|
||||||
param (
|
param (
|
||||||
[Parameter(Mandatory = $True)]
|
[Parameter(Mandatory = $True)]
|
||||||
@@ -123,6 +195,14 @@ function ToolcacheTest {
|
|||||||
$markdownDescription += GetMarkdownDescription -SoftwareVersion $foundVersion -SoftwareArchitecture $requiredArchitecture
|
$markdownDescription += GetMarkdownDescription -SoftwareVersion $foundVersion -SoftwareArchitecture $requiredArchitecture
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($SoftwareName -contains "Python") {
|
||||||
|
$markdownDescription += Get-SystemDefaultPython
|
||||||
|
}
|
||||||
|
if ($SoftwareName -contains "Ruby") {
|
||||||
|
$markdownDescription += Get-SystemDefaultRuby
|
||||||
|
}
|
||||||
|
|
||||||
Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $markdownDescription
|
Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $markdownDescription
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
## File: Install-Python.ps1
|
|
||||||
## Desc: Configure python on path with 3.6.* version from the tools cache
|
|
||||||
## Must run after tools cache is setup
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
Import-Module -Name ImageHelpers -Force
|
|
||||||
|
|
||||||
$python36path = $Env:AGENT_TOOLSDIRECTORY + '/Python/3.6*/x64'
|
|
||||||
$pythonDir = Get-Item -Path $python36path
|
|
||||||
|
|
||||||
if($pythonDir -is [array])
|
|
||||||
{
|
|
||||||
Write-Host "More than one python 3.6.* installations found"
|
|
||||||
Write-Host $pythonDir
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
$currentPath = Get-MachinePath
|
|
||||||
|
|
||||||
if ($currentPath | Select-String -SimpleMatch $pythonDir.FullName)
|
|
||||||
{
|
|
||||||
Write-Host $pythonDir.FullName ' is already in PATH'
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
Add-MachinePathItem -PathItem $pythonDir.FullName
|
|
||||||
Add-MachinePathItem -PathItem "$($pythonDir.FullName)\Scripts"
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
## File: Install-Python.ps1
|
|
||||||
## Desc: Configure python on path with 3.7.* version from the tools cache
|
|
||||||
## Must run after tools cache is setup
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
Import-Module -Name ImageHelpers -Force
|
|
||||||
|
|
||||||
$python37path = $Env:AGENT_TOOLSDIRECTORY + '/Python/3.7*/x64'
|
|
||||||
$pythonDir = Get-Item -Path $python37path
|
|
||||||
|
|
||||||
if($pythonDir -is [array])
|
|
||||||
{
|
|
||||||
Write-Host "More than one python 3.7.* installations found"
|
|
||||||
Write-Host $pythonDir
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
$currentPath = Get-MachinePath
|
|
||||||
|
|
||||||
if ($currentPath | Select-String -SimpleMatch $pythonDir.FullName)
|
|
||||||
{
|
|
||||||
Write-Host $pythonDir.FullName ' is already in PATH'
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
Add-MachinePathItem -PathItem $pythonDir.FullName
|
|
||||||
Add-MachinePathItem -PathItem "$($pythonDir.FullName)\Scripts"
|
|
||||||
Reference in New Issue
Block a user