mirror of
https://github.com/actions/runner-images.git
synced 2025-12-20 06:35:47 +00:00
Add install of dotnet tools (#4820)
* Add install of dotnet tools - Add new section under dotnet. - Add installer for dotnet tools. - Add tests for dotnet tools. - Add dotnet tools to software report. * Fixes from code review * Add test and version check to dotnet tool json - Rework installer to use tool name. - Rework test to call tool test. - Rework software report to use tool specific command to get version. * Fixes from code review * Fix test for nbgv * Fix linux installer * Fix name for test context. * Update images/linux/scripts/installers/dotnetcore-sdk.sh Co-authored-by: PJ <me@panekj.dev> * Update images/win/scripts/SoftwareReport/SoftwareReport.Common.psm1 Co-authored-by: PJ <me@panekj.dev> * Update images/win/scripts/Tests/DotnetSDK.Tests.ps1 Co-authored-by: PJ <me@panekj.dev> * Aligning PS1 between win and linux * Remove out * Add Nuget.org as feed source for installing tool * Fix tests * Fix getting tool version * Change from code review * Update images/win/toolsets/toolset-2022.json Co-authored-by: Mikhail Timofeev <48208649+miketimofeev@users.noreply.github.com> * Update images/win/toolsets/toolset-2019.json Co-authored-by: Mikhail Timofeev <48208649+miketimofeev@users.noreply.github.com> * Update images/win/toolsets/toolset-2016.json Co-authored-by: Mikhail Timofeev <48208649+miketimofeev@users.noreply.github.com> * Changes from code review * Change from code revision * Fix tests * dotnet tool is now installed to a tool path * Move dotnet tools install - Need to install the dotnet tools AFTER post install steps otherwise dotnet is not in the path. * Fxi typo in path * Add path to software report for dotnet tools * Remove new line (from code review) * Add progress output message to dotnet tools install * Change install path for tool * New updating PATH with dotnet tools location * Remove duplicated assigment * Remove output message and add back Out-null Co-authored-by: PJ <me@panekj.dev> Co-authored-by: Mikhail Timofeev <48208649+miketimofeev@users.noreply.github.com>
This commit is contained in:
@@ -331,6 +331,20 @@ function Get-DotNetCoreSdkVersions {
|
|||||||
return $dotNetCoreSdkVersion
|
return $dotNetCoreSdkVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Get-DotnetTools {
|
||||||
|
$env:PATH = "/etc/skel/.dotnet/tools:$($env:PATH)"
|
||||||
|
|
||||||
|
$dotnetTools = (Get-ToolsetContent).dotnet.tools
|
||||||
|
|
||||||
|
$toolsList = @()
|
||||||
|
|
||||||
|
ForEach ($dotnetTool in $dotnetTools) {
|
||||||
|
$toolsList += $dotnetTool.name + " " + (Invoke-Expression $dotnetTool.getversion)
|
||||||
|
}
|
||||||
|
|
||||||
|
return $toolsList
|
||||||
|
}
|
||||||
|
|
||||||
function Get-CachedDockerImages {
|
function Get-CachedDockerImages {
|
||||||
$toolsetJson = Get-ToolsetContent
|
$toolsetJson = Get-ToolsetContent
|
||||||
$images = $toolsetJson.docker.images
|
$images = $toolsetJson.docker.images
|
||||||
|
|||||||
@@ -230,6 +230,10 @@ $markdown += New-MDList -Style Unordered -Lines @(
|
|||||||
(Get-DotNetCoreSdkVersions)
|
(Get-DotNetCoreSdkVersions)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
$markdown += New-MDHeader ".NET tools" -Level 3
|
||||||
|
$tools = Get-DotnetTools
|
||||||
|
$markdown += New-MDList -Lines $tools -Style Unordered
|
||||||
|
|
||||||
$markdown += New-MDHeader "Databases" -Level 3
|
$markdown += New-MDHeader "Databases" -Level 3
|
||||||
$markdown += New-MDList -Style Unordered -Lines (@(
|
$markdown += New-MDList -Style Unordered -Lines (@(
|
||||||
(Get-PostgreSqlVersion),
|
(Get-PostgreSqlVersion),
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ source $HELPER_SCRIPTS/os.sh
|
|||||||
# Ubuntu 20 doesn't support EOL versions
|
# Ubuntu 20 doesn't support EOL versions
|
||||||
LATEST_DOTNET_PACKAGES=$(get_toolset_value '.dotnet.aptPackages[]')
|
LATEST_DOTNET_PACKAGES=$(get_toolset_value '.dotnet.aptPackages[]')
|
||||||
DOTNET_VERSIONS=$(get_toolset_value '.dotnet.versions[]')
|
DOTNET_VERSIONS=$(get_toolset_value '.dotnet.versions[]')
|
||||||
|
DOTNET_TOOLS=$(get_toolset_value '.dotnet.tools[].name')
|
||||||
|
|
||||||
# Disable telemetry
|
# Disable telemetry
|
||||||
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||||
@@ -67,4 +68,10 @@ setEtcEnvironmentVariable DOTNET_NOLOGO 1
|
|||||||
setEtcEnvironmentVariable DOTNET_MULTILEVEL_LOOKUP 0
|
setEtcEnvironmentVariable DOTNET_MULTILEVEL_LOOKUP 0
|
||||||
prependEtcEnvironmentPath '$HOME/.dotnet/tools'
|
prependEtcEnvironmentPath '$HOME/.dotnet/tools'
|
||||||
|
|
||||||
|
# install dotnet tools
|
||||||
|
for dotnet_tool in ${DOTNET_TOOLS[@]}; do
|
||||||
|
echo "Installing dotnet tool $dotnet_tool"
|
||||||
|
dotnet tool install $dotnet_tool --tool-path '/etc/skel/.dotnet/tools'
|
||||||
|
done
|
||||||
|
|
||||||
invoke_tests "DotnetSDK"
|
invoke_tests "DotnetSDK"
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||||
|
|
||||||
Describe "Dotnet" {
|
Describe "Dotnet and tools" {
|
||||||
|
|
||||||
BeforeAll {
|
BeforeAll {
|
||||||
|
$env:PATH = "/etc/skel/.dotnet/tools:$($env:PATH)"
|
||||||
$dotnetSDKs = dotnet --list-sdks | ConvertTo-Json
|
$dotnetSDKs = dotnet --list-sdks | ConvertTo-Json
|
||||||
$dotnetRuntimes = dotnet --list-runtimes | ConvertTo-Json
|
$dotnetRuntimes = dotnet --list-runtimes | ConvertTo-Json
|
||||||
}
|
}
|
||||||
@@ -28,4 +29,14 @@ Describe "Dotnet" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Context "Dotnet tools" {
|
||||||
|
$dotnetTools = (Get-ToolsetContent).dotnet.tools
|
||||||
|
$testCases = $dotnetTools | ForEach-Object { @{ ToolName = $_.name; TestInstance = $_.test }}
|
||||||
|
|
||||||
|
It "<ToolName> is available" -TestCases $testCases {
|
||||||
|
"$TestInstance" | Should -ReturnZeroExitCode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -254,6 +254,9 @@
|
|||||||
"2.1",
|
"2.1",
|
||||||
"3.1",
|
"3.1",
|
||||||
"5.0"
|
"5.0"
|
||||||
|
],
|
||||||
|
"tools": [
|
||||||
|
{ "name": "nbgv", "test": "nbgv --version", "getversion" : "nbgv --version" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"clang": {
|
"clang": {
|
||||||
|
|||||||
@@ -254,6 +254,9 @@
|
|||||||
"2.1",
|
"2.1",
|
||||||
"3.1",
|
"3.1",
|
||||||
"5.0"
|
"5.0"
|
||||||
|
],
|
||||||
|
"tools": [
|
||||||
|
{ "name": "nbgv", "test": "nbgv --version", "getversion" : "nbgv --version" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"clang": {
|
"clang": {
|
||||||
|
|||||||
@@ -108,6 +108,16 @@ function InstallAllValidSdks()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function InstallTools()
|
||||||
|
{
|
||||||
|
$dotnetTools = (Get-ToolsetContent).dotnet.tools
|
||||||
|
|
||||||
|
ForEach ($dotnetTool in $dotnetTools)
|
||||||
|
{
|
||||||
|
dotnet tool install $($dotnetTool.name) --tool-path "C:\Users\Default.dotnet\tools" --add-source https://api.nuget.org/v3/index.json | Out-Null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function RunPostInstallationSteps()
|
function RunPostInstallationSteps()
|
||||||
{
|
{
|
||||||
# Add dotnet to PATH
|
# Add dotnet to PATH
|
||||||
@@ -129,5 +139,6 @@ function RunPostInstallationSteps()
|
|||||||
|
|
||||||
InstallAllValidSdks
|
InstallAllValidSdks
|
||||||
RunPostInstallationSteps
|
RunPostInstallationSteps
|
||||||
|
InstallTools
|
||||||
|
|
||||||
Invoke-PesterTests -TestFile "DotnetSDK"
|
Invoke-PesterTests -TestFile "DotnetSDK"
|
||||||
@@ -200,6 +200,18 @@ function Get-DotnetSdks {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Get-DotnetTools {
|
||||||
|
$env:Path += ";C:\Users\Default.dotnet\tools"
|
||||||
|
$dotnetTools = (Get-ToolsetContent).dotnet.tools
|
||||||
|
|
||||||
|
$toolsList = @()
|
||||||
|
|
||||||
|
foreach ($dotnetTool in $dotnetTools) {
|
||||||
|
$toolsList += $dotnetTool.name + " " + (Invoke-Expression $dotnetTool.getversion)
|
||||||
|
}
|
||||||
|
return $toolsList
|
||||||
|
}
|
||||||
|
|
||||||
function Get-DotnetRuntimes {
|
function Get-DotnetRuntimes {
|
||||||
$runtimesRawList = dotnet --list-runtimes
|
$runtimesRawList = dotnet --list-runtimes
|
||||||
$runtimesRawList | Group-Object {$_.Split()[0]} | ForEach-Object {
|
$runtimesRawList | Group-Object {$_.Split()[0]} | ForEach-Object {
|
||||||
|
|||||||
@@ -261,6 +261,10 @@ $markdown += "``Location $($frameworks.Path)``"
|
|||||||
$markdown += New-MDNewLine
|
$markdown += New-MDNewLine
|
||||||
$markdown += New-MDList -Lines $frameworks.Versions -Style Unordered
|
$markdown += New-MDList -Lines $frameworks.Versions -Style Unordered
|
||||||
|
|
||||||
|
$markdown += New-MDHeader ".NET tools" -Level 3
|
||||||
|
$tools = Get-DotnetTools
|
||||||
|
$markdown += New-MDList -Lines $tools -Style Unordered
|
||||||
|
|
||||||
# PowerShell Tools
|
# PowerShell Tools
|
||||||
$markdown += New-MDHeader "PowerShell Tools" -Level 3
|
$markdown += New-MDHeader "PowerShell Tools" -Level 3
|
||||||
$markdown += New-MDList -Lines (Get-PowershellCoreVersion) -Style Unordered
|
$markdown += New-MDList -Lines (Get-PowershellCoreVersion) -Style Unordered
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
$dotnetVersions = (Get-ToolsetContent).dotnet.versions
|
$dotnetVersions = (Get-ToolsetContent).dotnet.versions
|
||||||
|
$dotnetTools = (Get-ToolsetContent).dotnet.tools
|
||||||
|
|
||||||
Describe "Dotnet SDK" {
|
Describe "Dotnet SDK and tools" {
|
||||||
|
|
||||||
Context "Default" {
|
Context "Default" {
|
||||||
It "Default Dotnet SDK is available" {
|
It "Default Dotnet SDK is available" {
|
||||||
@@ -21,4 +22,13 @@ Describe "Dotnet SDK" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
Context "Dotnet tools" {
|
||||||
|
$env:Path += ";C:\Users\Default.dotnet\tools"
|
||||||
|
$testCases = $dotnetTools | ForEach-Object { @{ ToolName = $_.name; TestInstance = $_.test }}
|
||||||
|
|
||||||
|
It "<ToolName> is available" -TestCases $testCases {
|
||||||
|
"$TestInstance" | Should -ReturnZeroExitCode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -387,6 +387,9 @@
|
|||||||
"3.1",
|
"3.1",
|
||||||
"5.0"
|
"5.0"
|
||||||
],
|
],
|
||||||
|
"tools": [
|
||||||
|
{ "name": "nbgv", "test": "nbgv --version", "getversion": "nbgv --version" }
|
||||||
|
],
|
||||||
"warmup": true
|
"warmup": true
|
||||||
},
|
},
|
||||||
"choco": {
|
"choco": {
|
||||||
|
|||||||
@@ -422,6 +422,9 @@
|
|||||||
"3.1",
|
"3.1",
|
||||||
"5.0"
|
"5.0"
|
||||||
],
|
],
|
||||||
|
"tools": [
|
||||||
|
{ "name": "nbgv", "test": "nbgv --version", "getversion": "nbgv --version" }
|
||||||
|
],
|
||||||
"warmup": true
|
"warmup": true
|
||||||
},
|
},
|
||||||
"choco": {
|
"choco": {
|
||||||
|
|||||||
@@ -283,6 +283,9 @@
|
|||||||
"3.1",
|
"3.1",
|
||||||
"5.0"
|
"5.0"
|
||||||
],
|
],
|
||||||
|
"tools": [
|
||||||
|
{ "name": "nbgv", "test": "nbgv --version", "getversion": "nbgv --version" }
|
||||||
|
],
|
||||||
"warmup": false
|
"warmup": false
|
||||||
},
|
},
|
||||||
"choco": {
|
"choco": {
|
||||||
|
|||||||
Reference in New Issue
Block a user