mirror of
https://github.com/actions/runner-images.git
synced 2025-12-10 11:07:02 +00:00
252 lines
11 KiB
PowerShell
252 lines
11 KiB
PowerShell
using module ./software-report-base/SoftwareReport.psm1
|
|
using module ./software-report-base/SoftwareReport.Nodes.psm1
|
|
|
|
$global:ErrorActionPreference = "Stop"
|
|
$global:ProgressPreference = "SilentlyContinue"
|
|
$ErrorView = "NormalView"
|
|
Set-StrictMode -Version Latest
|
|
|
|
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Android.psm1") -DisableNameChecking
|
|
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Browsers.psm1") -DisableNameChecking
|
|
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.CachedTools.psm1") -DisableNameChecking
|
|
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Common.psm1") -DisableNameChecking
|
|
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Databases.psm1") -DisableNameChecking
|
|
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Helpers.psm1") -DisableNameChecking
|
|
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Tools.psm1") -DisableNameChecking
|
|
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Java.psm1") -DisableNameChecking
|
|
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.WebServers.psm1") -DisableNameChecking
|
|
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.VisualStudio.psm1") -DisableNameChecking
|
|
|
|
# Software report
|
|
$softwareReport = [SoftwareReport]::new($(Build-OSInfoSection))
|
|
$optionalFeatures = $softwareReport.Root.AddHeader("Windows features")
|
|
$optionalFeatures.AddToolVersion("Windows Subsystem for Linux (WSLv1):", "Enabled")
|
|
if (Test-IsWin25) {
|
|
$optionalFeatures.AddToolVersion("Windows Subsystem for Linux (Default, WSLv2):", $(Get-WSL2Version))
|
|
}
|
|
$installedSoftware = $softwareReport.Root.AddHeader("Installed Software")
|
|
|
|
# Language and Runtime
|
|
$languageAndRuntime = $installedSoftware.AddHeader("Language and Runtime")
|
|
$languageAndRuntime.AddToolVersion("Bash", $(Get-BashVersion))
|
|
$languageAndRuntime.AddToolVersion("Go", $(Get-GoVersion))
|
|
$languageAndRuntime.AddToolVersion("Julia", $(Get-JuliaVersion))
|
|
$languageAndRuntime.AddToolVersion("Kotlin", $(Get-KotlinVersion))
|
|
$languageAndRuntime.AddToolVersion("LLVM", $(Get-LLVMVersion))
|
|
$languageAndRuntime.AddToolVersion("Node", $(Get-NodeVersion))
|
|
$languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion))
|
|
$languageAndRuntime.AddToolVersion("PHP", $(Get-PHPVersion))
|
|
$languageAndRuntime.AddToolVersion("Python", $(Get-PythonVersion))
|
|
$languageAndRuntime.AddToolVersion("Ruby", $(Get-RubyVersion))
|
|
|
|
# Package Management
|
|
$packageManagement = $installedSoftware.AddHeader("Package Management")
|
|
$packageManagement.AddToolVersion("Chocolatey", $(Get-ChocoVersion))
|
|
$packageManagement.AddToolVersion("Composer", $(Get-ComposerVersion))
|
|
$packageManagement.AddToolVersion("Helm", $(Get-HelmVersion))
|
|
$packageManagement.AddToolVersion("Miniconda", $(Get-CondaVersion))
|
|
$packageManagement.AddToolVersion("NPM", $(Get-NPMVersion))
|
|
$packageManagement.AddToolVersion("NuGet", $(Get-NugetVersion))
|
|
$packageManagement.AddToolVersion("pip", $(Get-PipVersion))
|
|
$packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion))
|
|
$packageManagement.AddToolVersion("RubyGems", $(Get-RubyGemsVersion))
|
|
$packageManagement.AddToolVersion("Vcpkg", $(Get-VcpkgVersion))
|
|
$packageManagement.AddToolVersion("Yarn", $(Get-YarnVersion))
|
|
|
|
$packageManagement.AddHeader("Environment variables").AddTable($(Build-PackageManagementEnvironmentTable))
|
|
|
|
# Project Management
|
|
$projectManagement = $installedSoftware.AddHeader("Project Management")
|
|
$projectManagement.AddToolVersion("Ant", $(Get-AntVersion))
|
|
$projectManagement.AddToolVersion("Gradle", $(Get-GradleVersion))
|
|
$projectManagement.AddToolVersion("Maven", $(Get-MavenVersion))
|
|
$projectManagement.AddToolVersion("sbt", $(Get-SbtVersion))
|
|
|
|
# Tools
|
|
$tools = $installedSoftware.AddHeader("Tools")
|
|
$tools.AddToolVersion("7zip", $(Get-7zipVersion))
|
|
$tools.AddToolVersion("aria2", $(Get-Aria2Version))
|
|
$tools.AddToolVersion("azcopy", $(Get-AzCopyVersion))
|
|
$tools.AddToolVersion("Bazel", $(Get-BazelVersion))
|
|
$tools.AddToolVersion("Bazelisk", $(Get-BazeliskVersion))
|
|
$tools.AddToolVersion("Bicep", $(Get-BicepVersion))
|
|
$tools.AddToolVersion("Cabal", $(Get-CabalVersion))
|
|
$tools.AddToolVersion("CMake", $(Get-CMakeVersion))
|
|
$tools.AddToolVersion("CodeQL Action Bundle", $(Get-CodeQLBundleVersion))
|
|
$tools.AddToolVersion("Docker", $(Get-DockerVersion))
|
|
$tools.AddToolVersion("Docker Compose v2", $(Get-DockerComposeVersionV2))
|
|
$tools.AddToolVersion("Docker-wincred", $(Get-DockerWincredVersion))
|
|
$tools.AddToolVersion("ghc", $(Get-GHCVersion))
|
|
$tools.AddToolVersion("Git", $(Get-GitVersion))
|
|
$tools.AddToolVersion("Git LFS", $(Get-GitLFSVersion))
|
|
if (Test-IsWin19) {
|
|
$tools.AddToolVersion("Google Cloud CLI", $(Get-GoogleCloudCLIVersion))
|
|
}
|
|
$tools.AddToolVersion("ImageMagick", $(Get-ImageMagickVersion))
|
|
$tools.AddToolVersion("InnoSetup", $(Get-InnoSetupVersion))
|
|
$tools.AddToolVersion("jq", $(Get-JQVersion))
|
|
$tools.AddToolVersion("Kind", $(Get-KindVersion))
|
|
$tools.AddToolVersion("Kubectl", $(Get-KubectlVersion))
|
|
if (-not (Test-IsWin25)) {
|
|
$tools.AddToolVersion("Mercurial", $(Get-MercurialVersion))
|
|
}
|
|
$tools.AddToolVersion("gcc", $(Get-GCCVersion))
|
|
$tools.AddToolVersion("gdb", $(Get-GDBVersion))
|
|
$tools.AddToolVersion("GNU Binutils", $(Get-GNUBinutilsVersion))
|
|
$tools.AddToolVersion("Newman", $(Get-NewmanVersion))
|
|
if (-not (Test-IsWin25)) {
|
|
$tools.AddToolVersion("NSIS", $(Get-NSISVersion))
|
|
}
|
|
$tools.AddToolVersion("OpenSSL", $(Get-OpenSSLVersion))
|
|
$tools.AddToolVersion("Packer", $(Get-PackerVersion))
|
|
if (Test-IsWin19) {
|
|
$tools.AddToolVersion("Parcel", $(Get-ParcelVersion))
|
|
}
|
|
$tools.AddToolVersion("Pulumi", $(Get-PulumiVersion))
|
|
$tools.AddToolVersion("R", $(Get-RVersion))
|
|
$tools.AddToolVersion("Service Fabric SDK", $(Get-ServiceFabricSDKVersion))
|
|
$tools.AddToolVersion("Stack", $(Get-StackVersion))
|
|
if (-not (Test-IsWin25)) {
|
|
$tools.AddToolVersion("Subversion (SVN)", $(Get-SVNVersion))
|
|
}
|
|
$tools.AddToolVersion("Swig", $(Get-SwigVersion))
|
|
$tools.AddToolVersion("VSWhere", $(Get-VSWhereVersion))
|
|
$tools.AddToolVersion("WinAppDriver", $(Get-WinAppDriver))
|
|
$tools.AddToolVersion("WiX Toolset", $(Get-WixVersion))
|
|
$tools.AddToolVersion("yamllint", $(Get-YAMLLintVersion))
|
|
$tools.AddToolVersion("zstd", $(Get-ZstdVersion))
|
|
$tools.AddToolVersion("Ninja", $(Get-NinjaVersion))
|
|
|
|
# CLI Tools
|
|
$cliTools = $installedSoftware.AddHeader("CLI Tools")
|
|
if (-not (Test-IsWin25)) {
|
|
$cliTools.AddToolVersion("Alibaba Cloud CLI", $(Get-AlibabaCLIVersion))
|
|
}
|
|
$cliTools.AddToolVersion("AWS CLI", $(Get-AWSCLIVersion))
|
|
$cliTools.AddToolVersion("AWS SAM CLI", $(Get-AWSSAMVersion))
|
|
$cliTools.AddToolVersion("AWS Session Manager CLI", $(Get-AWSSessionManagerVersion))
|
|
$cliTools.AddToolVersion("Azure CLI", $(Get-AzureCLIVersion))
|
|
$cliTools.AddToolVersion("Azure DevOps CLI extension", $(Get-AzureDevopsExtVersion))
|
|
if (Test-IsWin19) {
|
|
$cliTools.AddToolVersion("Cloud Foundry CLI", $(Get-CloudFoundryVersion))
|
|
}
|
|
$cliTools.AddToolVersion("GitHub CLI", $(Get-GHVersion))
|
|
|
|
# Rust Tools
|
|
Initialize-RustEnvironment
|
|
$rustTools = $installedSoftware.AddHeader("Rust Tools")
|
|
$rustTools.AddToolVersion("Cargo", $(Get-RustCargoVersion))
|
|
$rustTools.AddToolVersion("Rust", $(Get-RustVersion))
|
|
$rustTools.AddToolVersion("Rustdoc", $(Get-RustdocVersion))
|
|
$rustTools.AddToolVersion("Rustup", $(Get-RustupVersion))
|
|
|
|
$rustToolsPackages = $rustTools.AddHeader("Packages")
|
|
if (-not (Test-IsWin25)) {
|
|
$rustToolsPackages.AddToolVersion("bindgen", $(Get-BindgenVersion))
|
|
$rustToolsPackages.AddToolVersion("cargo-audit", $(Get-CargoAuditVersion))
|
|
$rustToolsPackages.AddToolVersion("cargo-outdated", $(Get-CargoOutdatedVersion))
|
|
$rustToolsPackages.AddToolVersion("cbindgen", $(Get-CbindgenVersion))
|
|
}
|
|
$rustToolsPackages.AddToolVersion("Clippy", $(Get-RustClippyVersion))
|
|
$rustToolsPackages.AddToolVersion("Rustfmt", $(Get-RustfmtVersion))
|
|
|
|
# Browsers and Drivers
|
|
$browsersAndWebdrivers = $installedSoftware.AddHeader("Browsers and Drivers")
|
|
$browsersAndWebdrivers.AddNodes($(Build-BrowserSection))
|
|
$browsersAndWebdrivers.AddHeader("Environment variables").AddTable($(Build-BrowserWebdriversEnvironmentTable))
|
|
|
|
# Java
|
|
$installedSoftware.AddHeader("Java").AddTable($(Get-JavaVersions))
|
|
|
|
# Shells
|
|
$installedSoftware.AddHeader("Shells").AddTable($(Get-ShellTarget))
|
|
|
|
# MSYS2
|
|
$msys2 = $installedSoftware.AddHeader("MSYS2")
|
|
$msys2.AddToolVersion("Pacman", $(Get-PacmanVersion))
|
|
|
|
$notes = @'
|
|
Location: C:\msys64
|
|
|
|
Note: MSYS2 is pre-installed on image but not added to PATH.
|
|
'@
|
|
$msys2.AddHeader("Notes").AddNote($notes)
|
|
|
|
# BizTalk Server
|
|
if (Test-IsWin19)
|
|
{
|
|
$installedSoftware.AddHeader("BizTalk Server").AddNode($(Get-BizTalkVersion))
|
|
}
|
|
|
|
# Cached Tools
|
|
$installedSoftware.AddHeader("Cached Tools").AddNodes($(Build-CachedToolsSection))
|
|
|
|
# Databases
|
|
$databases = $installedSoftware.AddHeader("Databases")
|
|
$databases.AddHeader("PostgreSQL").AddTable($(Get-PostgreSQLTable))
|
|
$databases.AddHeader("MongoDB").AddTable($(Get-MongoDBTable))
|
|
|
|
# Database tools
|
|
$databaseTools = $installedSoftware.AddHeader("Database tools")
|
|
$databaseTools.AddToolVersion("Azure CosmosDb Emulator", $(Get-AzCosmosDBEmulatorVersion))
|
|
$databaseTools.AddToolVersion("DacFx", $(Get-DacFxVersion))
|
|
$databaseTools.AddToolVersion("MySQL", $(Get-MySQLVersion))
|
|
$databaseTools.AddToolVersion("SQL OLEDB Driver", $(Get-SQLOLEDBDriverVersion))
|
|
$databaseTools.AddToolVersion("SQLPS", $(Get-SQLPSVersion))
|
|
if (Test-IsWin25) {
|
|
$databaseTools.AddToolVersion("MongoDB Shell (mongosh)", $(Get-MongoshVersion))
|
|
}
|
|
|
|
# Web Servers
|
|
$installedSoftware.AddHeader("Web Servers").AddTable($(Build-WebServersSection))
|
|
|
|
# Visual Studio
|
|
$vsTable = Get-VisualStudioVersion
|
|
$visualStudio = $installedSoftware.AddHeader($vsTable.Name)
|
|
$visualStudio.AddTable($vsTable)
|
|
|
|
$workloads = $visualStudio.AddHeader("Workloads, components and extensions")
|
|
$workloads.AddTable((Get-VisualStudioComponents) + (Get-VisualStudioExtensions))
|
|
|
|
$msVisualCpp = $visualStudio.AddHeader("Microsoft Visual C++")
|
|
$msVisualCpp.AddTable($(Get-VisualCPPComponents))
|
|
|
|
$visualStudio.AddToolVersionsList("Installed Windows SDKs", $(Get-WindowsSDKs).Versions, '^.+')
|
|
|
|
# .NET Core Tools
|
|
$netCoreTools = $installedSoftware.AddHeader(".NET Core Tools")
|
|
if (Test-IsWin19) {
|
|
# Visual Studio 2019 brings own version of .NET Core which is different from latest official version
|
|
$netCoreTools.AddToolVersionsListInline(".NET Core SDK", $(Get-DotnetSdks).Versions, '^\d+\.\d+\.\d{2}')
|
|
} else {
|
|
$netCoreTools.AddToolVersionsListInline(".NET Core SDK", $(Get-DotnetSdks).Versions, '^\d+\.\d+\.\d{3}')
|
|
}
|
|
$netCoreTools.AddToolVersionsListInline(".NET Framework", $(Get-DotnetFrameworkVersions), '^.+')
|
|
Get-DotnetRuntimes | ForEach-Object {
|
|
$netCoreTools.AddToolVersionsListInline($_.Runtime, $_.Versions, '^.+')
|
|
}
|
|
$netCoreTools.AddNodes($(Get-DotnetTools))
|
|
|
|
# PowerShell Tools
|
|
$psTools = $installedSoftware.AddHeader("PowerShell Tools")
|
|
$psTools.AddToolVersion("PowerShell", $(Get-PowershellCoreVersion))
|
|
|
|
$psModules = $psTools.AddHeader("Powershell Modules")
|
|
$psModules.AddNodes($(Get-PowerShellModules))
|
|
|
|
|
|
# Android
|
|
$android = $installedSoftware.AddHeader("Android")
|
|
$android.AddTable($(Build-AndroidTable))
|
|
|
|
$android.AddHeader("Environment variables").AddTable($(Build-AndroidEnvironmentTable))
|
|
|
|
# Cached Docker images
|
|
if (-not (Test-IsWin25)) {
|
|
$installedSoftware.AddHeader("Cached Docker images").AddTable($(Get-CachedDockerImagesTableData))
|
|
}
|
|
|
|
# Generate reports
|
|
$softwareReport.ToJson() | Out-File -FilePath "C:\software-report.json" -Encoding UTF8NoBOM
|
|
$softwareReport.ToMarkdown() | Out-File -FilePath "C:\software-report.md" -Encoding UTF8NoBOM
|