mirror of
https://github.com/actions/runner-images-sangeeth.git
synced 2025-12-15 22:36:46 +00:00
Merge branch 'master' of https://github.com/miketimofeev/virtual-environments into v-mitim/get_rid_of_apt.sh_invocation
This commit is contained in:
@@ -14,9 +14,9 @@ download_with_retries() {
|
||||
local COMPRESSED="$4"
|
||||
|
||||
if [ $COMPRESSED == "compressed" ]; then
|
||||
COMMAND="curl $URL -4 -s --compressed -o '$DEST/$NAME'"
|
||||
COMMAND="curl $URL -4 -sL --compressed -o '$DEST/$NAME'"
|
||||
else
|
||||
COMMAND="curl $URL -4 -s -o '$DEST/$NAME'"
|
||||
COMMAND="curl $URL -4 -sL -o '$DEST/$NAME'"
|
||||
fi
|
||||
|
||||
echo "Downloading $URL..."
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: basic.sh
|
||||
## Desc: Installs basic command line utilities and dev packages
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
set -e
|
||||
|
||||
common_packages="dnsutils
|
||||
iproute2
|
||||
iputils-ping
|
||||
libc++-dev
|
||||
libc++abi-dev
|
||||
libcurl3
|
||||
libicu55
|
||||
libunwind8
|
||||
locales
|
||||
openssh-client
|
||||
tzdata
|
||||
zstd
|
||||
lib32z1
|
||||
libxkbfile-dev
|
||||
pkg-config
|
||||
libsecret-1-dev
|
||||
libxss1
|
||||
libgconf-2-4
|
||||
dbus
|
||||
xvfb
|
||||
libgbm-dev
|
||||
libgtk-3-0
|
||||
tk
|
||||
fakeroot
|
||||
dpkg
|
||||
rpm
|
||||
xz-utils
|
||||
xorriso
|
||||
zsync
|
||||
gnupg2
|
||||
texinfo"
|
||||
|
||||
cmd_packages="curl
|
||||
file
|
||||
ftp
|
||||
jq
|
||||
netcat
|
||||
ssh
|
||||
parallel
|
||||
rsync
|
||||
shellcheck
|
||||
sudo
|
||||
telnet
|
||||
time
|
||||
unzip
|
||||
zip
|
||||
wget
|
||||
upx
|
||||
m4
|
||||
bison
|
||||
flex"
|
||||
|
||||
# Install basic command-line utilities
|
||||
for package in $common_packages $cmd_packages; do
|
||||
echo "Install $package"
|
||||
apt-fast install -y --no-install-recommends $package
|
||||
done
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in $cmd_packages; do
|
||||
if ! command -v $cmd; then
|
||||
echo "$cmd was not installed"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Basic packages:"
|
||||
for package in $common_packages $cmd_packages; do
|
||||
DocumentInstalledItemIndent $package
|
||||
done
|
||||
@@ -37,7 +37,8 @@ common_packages="dnsutils
|
||||
zsync
|
||||
gnupg2
|
||||
lib32z1
|
||||
texinfo"
|
||||
texinfo
|
||||
libsqlite3-dev"
|
||||
|
||||
cmd_packages="curl
|
||||
file
|
||||
@@ -56,7 +57,10 @@ cmd_packages="curl
|
||||
wget
|
||||
m4
|
||||
bison
|
||||
flex"
|
||||
flex
|
||||
patchelf
|
||||
bzip2
|
||||
sqlite3"
|
||||
|
||||
if isUbuntu20 ; then
|
||||
echo "Install python2"
|
||||
@@ -64,7 +68,7 @@ if isUbuntu20 ; then
|
||||
fi
|
||||
|
||||
echo "Install libcurl"
|
||||
if isUbuntu18 ; then
|
||||
if isUbuntu16 || isUbuntu18; then
|
||||
libcurelVer="libcurl3"
|
||||
fi
|
||||
|
||||
@@ -74,12 +78,19 @@ fi
|
||||
|
||||
apt-get install -y --no-install-recommends $libcurelVer
|
||||
|
||||
# install additional packages only for Ubuntu16.04
|
||||
if isUbuntu16; then
|
||||
common_packages="$common_packages
|
||||
libc++-dev
|
||||
libc++abi-dev
|
||||
libicu55"
|
||||
fi
|
||||
|
||||
for package in $common_packages $cmd_packages; do
|
||||
echo "Install $package"
|
||||
apt-get install -y --no-install-recommends $package
|
||||
done
|
||||
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in $cmd_packages; do
|
||||
|
||||
30
images/linux/scripts/installers/oras-cli.sh
Normal file
30
images/linux/scripts/installers/oras-cli.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: oras-cli.sh
|
||||
## Desc: Installs ORAS CLI
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Determine latest ORAS CLI version
|
||||
ORAS_CLI_LATEST_VERSION_URL=https://api.github.com/repos/deislabs/oras/releases/latest
|
||||
ORAS_CLI_DOWNLOAD_URL=$(curl -s $ORAS_CLI_LATEST_VERSION_URL | jq -r '.assets[].browser_download_url | select(contains("linux_amd64.tar.gz"))')
|
||||
ORAS_CLI_ARCHIVE=$(basename $ORAS_CLI_DOWNLOAD_URL)
|
||||
|
||||
# Install ORAS CLI
|
||||
cd /tmp
|
||||
download_with_retries $ORAS_CLI_DOWNLOAD_URL
|
||||
tar -zxvf $ORAS_CLI_ARCHIVE -C /usr/local/bin oras
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! oras version; then
|
||||
echo "ORAS CLI was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "ORAS CLI $(oras version | awk 'NR==1{print $2}')"
|
||||
@@ -19,13 +19,15 @@ source $CARGO_HOME/env
|
||||
# Install common tools
|
||||
rustup component add rustfmt clippy
|
||||
cargo install bindgen cbindgen
|
||||
cargo install cargo-audit
|
||||
cargo install cargo-outdated
|
||||
|
||||
echo "Test installation of the Rust toochain"
|
||||
|
||||
# Permissions
|
||||
chmod -R 777 $(dirname $RUSTUP_HOME)
|
||||
|
||||
for cmd in rustup rustc rustdoc cargo rustfmt cargo-clippy bindgen cbindgen; do
|
||||
for cmd in rustup rustc rustdoc cargo rustfmt cargo-clippy bindgen cbindgen 'cargo audit' 'cargo outdated'; do
|
||||
if ! command -v $cmd --version; then
|
||||
echo "$cmd was not installed or is not found on the path"
|
||||
exit 1
|
||||
@@ -54,3 +56,5 @@ DocumentInstalledItem "clippy ($(cargo-clippy --version 2>&1 | cut -d ' ' -f 2))
|
||||
DocumentInstalledItem "rustdoc ($(rustdoc --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "bindgen ($(bindgen --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "cbindgen ($(cbindgen --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "cargo audit ($(cargo audit --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "cargo outdated ($(cargo outdated --version 2>&1 | cut -d ' ' -f 2))"
|
||||
@@ -143,7 +143,7 @@
|
||||
"{{template_dir}}/scripts/installers/azcopy.sh",
|
||||
"{{template_dir}}/scripts/installers/azure-cli.sh",
|
||||
"{{template_dir}}/scripts/installers/azure-devops-cli.sh",
|
||||
"{{template_dir}}/scripts/installers/1604/basic.sh",
|
||||
"{{template_dir}}/scripts/installers/basic.sh",
|
||||
"{{template_dir}}/scripts/installers/aliyun-cli.sh",
|
||||
"{{template_dir}}/scripts/installers/aws.sh",
|
||||
"{{template_dir}}/scripts/installers/build-essential.sh",
|
||||
@@ -177,6 +177,7 @@
|
||||
"{{template_dir}}/scripts/installers/mysql.sh",
|
||||
"{{template_dir}}/scripts/installers/nodejs.sh",
|
||||
"{{template_dir}}/scripts/installers/bazel.sh",
|
||||
"{{template_dir}}/scripts/installers/oras-cli.sh",
|
||||
"{{template_dir}}/scripts/installers/phantomjs.sh",
|
||||
"{{template_dir}}/scripts/installers/php.sh",
|
||||
"{{template_dir}}/scripts/installers/pollinate.sh",
|
||||
|
||||
@@ -181,6 +181,7 @@
|
||||
"{{template_dir}}/scripts/installers/nvm.sh",
|
||||
"{{template_dir}}/scripts/installers/nodejs.sh",
|
||||
"{{template_dir}}/scripts/installers/bazel.sh",
|
||||
"{{template_dir}}/scripts/installers/oras-cli.sh",
|
||||
"{{template_dir}}/scripts/installers/phantomjs.sh",
|
||||
"{{template_dir}}/scripts/installers/php.sh",
|
||||
"{{template_dir}}/scripts/installers/pollinate.sh",
|
||||
|
||||
@@ -183,6 +183,7 @@
|
||||
"{{template_dir}}/scripts/installers/nvm.sh",
|
||||
"{{template_dir}}/scripts/installers/nodejs.sh",
|
||||
"{{template_dir}}/scripts/installers/bazel.sh",
|
||||
"{{template_dir}}/scripts/installers/oras-cli.sh",
|
||||
"{{template_dir}}/scripts/installers/phantomjs.sh",
|
||||
"{{template_dir}}/scripts/installers/php.sh",
|
||||
"{{template_dir}}/scripts/installers/pollinate.sh",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
- System Version: macOS 10.15.5 (19F101)
|
||||
- Kernel Version: Darwin 19.5.0
|
||||
- System Integrity Protection: Enabled
|
||||
- Image Version: 20200625.2
|
||||
- Image Version: 20200702.1
|
||||
|
||||
## Installed Software
|
||||
### Language and Runtime
|
||||
@@ -18,9 +18,9 @@
|
||||
- gcc-9 (Homebrew GCC 9.3.0_1) 9.3.0
|
||||
- GNU Fortran (Homebrew GCC 8.4.0_1) 8.4.0
|
||||
- GNU Fortran (Homebrew GCC 9.3.0_1) 9.3.0
|
||||
- Node.js v12.18.1
|
||||
- Node.js v12.18.2
|
||||
- NVM 0.35.3
|
||||
- NVM - Cached node versions: v6.17.1 v8.17.0 v10.21.0 v12.18.1 v13.14.0 v14.4.0
|
||||
- NVM - Cached node versions: v6.17.1 v8.17.0 v10.21.0 v12.18.2 v13.14.0 v14.5.0
|
||||
- PowerShell 7.0.2
|
||||
- Python 2.7.17
|
||||
- Python 3.7.7
|
||||
@@ -36,7 +36,7 @@
|
||||
- Bundler version 2.1.4
|
||||
- Carthage 0.35.0
|
||||
- CocoaPods 1.9.3
|
||||
- Homebrew 2.4.2
|
||||
- Homebrew 2.4.3
|
||||
- NPM 6.14.5
|
||||
- Yarn 1.22.4
|
||||
- NuGet 5.6.0.6489
|
||||
@@ -47,10 +47,10 @@
|
||||
|
||||
### Project Management
|
||||
- Apache Maven 3.6.3
|
||||
- Gradle 6.5
|
||||
- Gradle 6.5.1
|
||||
|
||||
### Utilities
|
||||
- Curl 7.71.0
|
||||
- Curl 7.71.1
|
||||
- Git: 2.27.0
|
||||
- Git LFS: 2.11.0
|
||||
- GitHub CLI: 0.10.1
|
||||
@@ -67,7 +67,7 @@
|
||||
- aria2 1.35.0
|
||||
- azcopy 10.4.3
|
||||
- zstd 1.4.5
|
||||
- bazel 3.3.0
|
||||
- bazel 3.3.1
|
||||
- bazelisk v1.5.0
|
||||
- helm v3.2.4+g0ad800e
|
||||
- virtualbox 6.1.10r138449
|
||||
@@ -77,13 +77,13 @@
|
||||
- 7-Zip 16.02
|
||||
|
||||
### Tools
|
||||
- Fastlane 2.149.1
|
||||
- Fastlane 2.150.1
|
||||
- Cmake 3.17.3
|
||||
- App Center CLI 2.6.0
|
||||
- App Center CLI 2.6.1
|
||||
- Azure CLI 2.8.0
|
||||
- AWS CLI 2.0.25
|
||||
- AWS CLI 2.0.27
|
||||
- AWS SAM CLI 0.53.0
|
||||
- Aliyun CLI 3.0.48
|
||||
- Aliyun CLI 3.0.49
|
||||
- GHCup v0.1.5-p2
|
||||
- GHC 8.10.1
|
||||
- Cabal 3.2.0.0
|
||||
@@ -94,9 +94,9 @@
|
||||
- SafariDriver 13.1.1 (15609.2.9.1.2)
|
||||
- Google Chrome 83.0.4103.116
|
||||
- ChromeDriver 83.0.4103.39
|
||||
- Microsoft Edge 83.0.478.56
|
||||
- MSEdgeDriver 83.0.478.56
|
||||
- Mozilla Firefox 77.0.1
|
||||
- Microsoft Edge 83.0.478.58
|
||||
- MSEdgeDriver 83.0.478.58
|
||||
- Mozilla Firefox 78.0.1
|
||||
- geckodriver 0.26.0
|
||||
|
||||
### Cached Tools
|
||||
@@ -109,8 +109,8 @@
|
||||
#### Python
|
||||
- 2.7.18
|
||||
- 3.5.9
|
||||
- 3.6.10
|
||||
- 3.7.7
|
||||
- 3.6.11
|
||||
- 3.7.8
|
||||
- 3.8.3
|
||||
|
||||
#### PyPy
|
||||
|
||||
@@ -84,6 +84,11 @@
|
||||
"source": "{{ template_dir }}/scripts/SoftwareReport",
|
||||
"destination": "{{user `image_folder`}}"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{ template_dir }}/scripts/Tests",
|
||||
"destination": "{{user `image_folder`}}"
|
||||
},
|
||||
{
|
||||
"type": "windows-shell",
|
||||
"inline": [
|
||||
@@ -839,18 +844,6 @@
|
||||
"{{ template_dir }}/scripts/Installers/Validate-AliyunCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-JavaTools.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Cmake.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
@@ -911,12 +904,6 @@
|
||||
"{{ template_dir }}/scripts/Installers/Validate-AzureCosmosDbEmulator.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-7zip.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
@@ -983,18 +970,6 @@
|
||||
"{{ template_dir }}/scripts/Installers/Validate-KubernetesCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Kind.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-MongoDB.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
@@ -1019,6 +994,12 @@
|
||||
"type": "windows-restart",
|
||||
"restart_timeout": "10m"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Tests/RunAll-Tests.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"inline": [
|
||||
|
||||
@@ -84,6 +84,11 @@
|
||||
"source": "{{ template_dir }}/scripts/SoftwareReport",
|
||||
"destination": "{{user `image_folder`}}"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{ template_dir }}/scripts/Tests",
|
||||
"destination": "{{user `image_folder`}}"
|
||||
},
|
||||
{
|
||||
"type": "windows-shell",
|
||||
"inline": [
|
||||
@@ -109,6 +114,14 @@
|
||||
],
|
||||
"execution_policy": "unrestricted"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"elevated_user": "SYSTEM",
|
||||
"elevated_password": "",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Windows2019/Install-WSL.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
@@ -243,6 +256,12 @@
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Wix.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-WSL.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
@@ -812,18 +831,6 @@
|
||||
"{{ template_dir }}/scripts/Installers/Validate-NodeLts.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-JavaTools.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Cmake.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
@@ -885,12 +892,6 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-7zip.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Packer.ps1"
|
||||
@@ -962,18 +963,6 @@
|
||||
"{{ template_dir }}/scripts/Installers/Validate-KubernetesCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Kind.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-MongoDB.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
@@ -1010,6 +999,12 @@
|
||||
"type": "windows-restart",
|
||||
"restart_timeout": "10m"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Tests/RunAll-Tests.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"inline": [
|
||||
|
||||
@@ -4,6 +4,7 @@ param()
|
||||
. $PSScriptRoot\PathHelpers.ps1
|
||||
. $PSScriptRoot\InstallHelpers.ps1
|
||||
. $PSScriptRoot\ChocoHelpers.ps1
|
||||
. $PSScriptRoot\TestsHelpers.ps1
|
||||
|
||||
Export-ModuleMember -Function @(
|
||||
'Test-MachinePath'
|
||||
@@ -28,4 +29,7 @@ Export-ModuleMember -Function @(
|
||||
'Test-IsWin16'
|
||||
'Choco-Install'
|
||||
'Extract-7Zip'
|
||||
'Get-CommandResult'
|
||||
'Get-EnvironmentVariable'
|
||||
'Invoke-PesterTests'
|
||||
)
|
||||
|
||||
96
images/win/scripts/ImageHelpers/TestsHelpers.ps1
Normal file
96
images/win/scripts/ImageHelpers/TestsHelpers.ps1
Normal file
@@ -0,0 +1,96 @@
|
||||
function Get-CommandResult {
|
||||
Param (
|
||||
[Parameter(Mandatory)][string] $Command
|
||||
)
|
||||
# CMD trick to suppress and show error output because some commands write to stderr (for example, "python --version")
|
||||
[string[]]$output = & $env:comspec /c "$Command 2>&1"
|
||||
$exitCode = $LASTEXITCODE
|
||||
|
||||
return @{
|
||||
Output = $output
|
||||
ExitCode = $exitCode
|
||||
}
|
||||
}
|
||||
|
||||
# Gets value of environment variable by the name
|
||||
function Get-EnvironmentVariable($variable) {
|
||||
return [System.Environment]::GetEnvironmentVariable($variable)
|
||||
}
|
||||
|
||||
# Update environment variables without reboot
|
||||
function Update-Environment {
|
||||
$variables = [Environment]::GetEnvironmentVariables("Machine")
|
||||
$variables.Keys | ForEach-Object {
|
||||
$key = $_
|
||||
$value = $variables[$key]
|
||||
Set-Item -Path "env:$key" -Value $value
|
||||
}
|
||||
# We need to refresh PATH the latest one because it could include other variables "%M2_HOME%/bin"
|
||||
$env:PATH = [Environment]::GetEnvironmentVariable("PATH", "Machine")
|
||||
}
|
||||
|
||||
# Run Pester tests for specific tool
|
||||
function Invoke-PesterTests {
|
||||
Param(
|
||||
[Parameter(Mandatory)][string] $TestFile,
|
||||
[string] $TestName
|
||||
)
|
||||
|
||||
$testPath = "C:\image\Tests\${TestFile}.Tests.ps1"
|
||||
if (-not (Test-Path $testPath)) {
|
||||
throw "Unable to find test file '$TestFile' on '$testPath'."
|
||||
}
|
||||
|
||||
$configuration = [PesterConfiguration] @{
|
||||
Run = @{ Path = $testPath; PassThru = $true }
|
||||
Output = @{ Verbosity = "Detailed" }
|
||||
}
|
||||
if ($TestName) {
|
||||
$configuration.Filter.FullName = $TestName
|
||||
}
|
||||
|
||||
# Update environment variables without reboot
|
||||
Update-Environment
|
||||
|
||||
# Switch ErrorActionPreference to Stop temporary to make sure that tests will on silent errors too
|
||||
$backupErrorActionPreference = $ErrorActionPreference
|
||||
$ErrorActionPreference = "Stop"
|
||||
$results = Invoke-Pester -Configuration $configuration
|
||||
$ErrorActionPreference = $backupErrorActionPreference
|
||||
|
||||
# Fail in case if no tests are run
|
||||
if (-not ($results -and ($results.FailedCount -eq 0) -and ($results.PassedCount -gt 0))) {
|
||||
$results
|
||||
throw "Test run has failed"
|
||||
}
|
||||
}
|
||||
|
||||
# Pester Assert to check exit code of command
|
||||
function ShouldReturnZeroExitCode {
|
||||
Param(
|
||||
[String] $ActualValue,
|
||||
[switch] $Negate,
|
||||
[string] $Because
|
||||
)
|
||||
|
||||
$result = Get-CommandResult $ActualValue
|
||||
|
||||
[bool]$succeeded = $result.ExitCode -eq 0
|
||||
if ($Negate) { $succeeded = -not $succeeded }
|
||||
|
||||
if (-not $succeeded)
|
||||
{
|
||||
$сommandOutputIndent = " " * 4
|
||||
$commandOutput = ($result.Output | ForEach-Object { "${сommandOutputIndent}${_}" }) -join "`n"
|
||||
$failureMessage = "Command '${ActualValue}' has finished with exit code ${actualExitCode}`n${commandOutput}"
|
||||
}
|
||||
|
||||
return [PSCustomObject] @{
|
||||
Succeeded = $succeeded
|
||||
FailureMessage = $failureMessage
|
||||
}
|
||||
}
|
||||
|
||||
If (Get-Command -Name Add-AssertionOperator -ErrorAction SilentlyContinue) {
|
||||
Add-AssertionOperator -Name ReturnZeroExitCode -InternalName ShouldReturnZeroExitCode -Test ${function:ShouldReturnZeroExitCode}
|
||||
}
|
||||
@@ -4,3 +4,5 @@
|
||||
################################################################################
|
||||
|
||||
Choco-Install -PackageName 7zip.install
|
||||
|
||||
Invoke-PesterTests -TestFile "Tools" -TestName "7-Zip"
|
||||
@@ -4,3 +4,5 @@
|
||||
################################################################################
|
||||
|
||||
Choco-Install -PackageName cmake.install -ArgumentList "--installargs",'ADD_CMAKE_TO_PATH=""System""'
|
||||
|
||||
Invoke-PesterTests -TestFile "Tools" -TestName "CMake"
|
||||
@@ -126,3 +126,5 @@ $archivePath = Start-DownloadWithRetry -Url $uri -Name "cobertura.zip"
|
||||
Extract-7Zip -Path $archivePath -DestinationPath "C:\"
|
||||
|
||||
setx COBERTURA_HOME $coberturaPath /M
|
||||
|
||||
Invoke-PesterTests -TestFile "Java"
|
||||
@@ -38,3 +38,5 @@ catch
|
||||
Write-Host $_.Exception.Message
|
||||
exit 1
|
||||
}
|
||||
|
||||
Invoke-PesterTests -TestFile "Tools" -TestName "Kind"
|
||||
@@ -7,3 +7,5 @@ Choco-Install -PackageName mongodb
|
||||
$mongoPath = (Get-CimInstance Win32_Service -Filter "Name LIKE 'mongodb'").PathName
|
||||
$mongoBin = Split-Path -Path $mongoPath.split('"')[1]
|
||||
Add-MachinePathItem "$mongoBin"
|
||||
|
||||
Invoke-PesterTests -TestFile "Databases" -TestName "MongoDB"
|
||||
@@ -1,16 +0,0 @@
|
||||
################################################################################
|
||||
## File: Validate-Cmake.ps1
|
||||
## Desc: Validate Cmake
|
||||
################################################################################
|
||||
|
||||
if(Get-Command -Name 'cmake')
|
||||
{
|
||||
Write-Host "CMake $(cmake -version) on path"
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "CMake not on path"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
################################################################################
|
||||
## File: Validate-JavaTools.ps1
|
||||
## Desc: Validate various JDKs and java tools
|
||||
################################################################################
|
||||
|
||||
Function Validate-JavaVersion {
|
||||
param (
|
||||
[Parameter(Mandatory)] [string] $Version,
|
||||
[switch] $Default
|
||||
)
|
||||
|
||||
Write-Host "Checking Java $version"
|
||||
|
||||
# Set Path to get Java
|
||||
if (-not $Default)
|
||||
{
|
||||
# Take 7 & 8 for versions 1.7 and 1.8
|
||||
$versionNumber = $version.Split(".") | Select-Object -Last 1
|
||||
|
||||
$javaPath = [System.Environment]::GetEnvironmentVariable("JAVA_HOME_${versionNumber}_X64")
|
||||
if ([string]::IsNullOrEmpty($javaPath))
|
||||
{
|
||||
Write-Host "Environment variable 'JAVA_HOME_${versionNumber}_X64' is null"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$javaBin = "$javaPath\bin;"
|
||||
$env:Path = $javaBin + $env:Path
|
||||
}
|
||||
else
|
||||
{
|
||||
Validate-JavaVersion -Version $Version
|
||||
}
|
||||
|
||||
$isJavaExists = $($(& $env:comspec "/s /c java -version 2>&1") | Out-String) -match '^(?<vendor>.+) version "(?<version>.+)".*'
|
||||
|
||||
if ($isJavaExists)
|
||||
{
|
||||
$javaVersion = $matches.version
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "Java $version was not found"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$isJavaCorrect = $javaVersion.StartsWith($version)
|
||||
|
||||
if($isJavaCorrect)
|
||||
{
|
||||
Write-Host "Java $javaVersion found"
|
||||
# Reset Path to the default one in case we need to check the default Java later
|
||||
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "Expected Java $version, but found $javaVersion"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
if((Get-Command -Name 'java') -and (Get-Command -Name 'mvn') -and (Get-Command -Name 'ant') -and (Get-Command -Name 'gradle'))
|
||||
{
|
||||
Write-Host "Java $(java -version) on path"
|
||||
Write-Host "Maven $(mvn -version) on path"
|
||||
Write-Host "Ant $(ant -version) on path"
|
||||
Write-Host "Gradle $(gradle -version) on path"
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "one of Java,Maven,Ant,Gradle is not on path."
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host "Checking installed Java versions"
|
||||
Validate-JavaVersion -Version "1.7"
|
||||
Validate-JavaVersion -Version "1.8" -Default
|
||||
Validate-JavaVersion -Version "11"
|
||||
Validate-JavaVersion -Version "13"
|
||||
@@ -1,14 +0,0 @@
|
||||
################################################################################
|
||||
## File: Validate-Kind.ps1
|
||||
## Desc: Validate Kind.
|
||||
################################################################################
|
||||
|
||||
if (Get-Command -Name 'kind')
|
||||
{
|
||||
Write-Host "kind $(kind version) in path"
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "kind is not in path"
|
||||
exit 1
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
################################################################################
|
||||
## File: Validate-MongoDB.ps1
|
||||
## Desc: Validate MongoDB
|
||||
################################################################################
|
||||
|
||||
if (Get-Command -Name 'mongod')
|
||||
{
|
||||
Write-Host 'mongod is on path'
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host 'mongod not on path'
|
||||
exit 1
|
||||
}
|
||||
|
||||
if (Get-Command -Name 'mongo')
|
||||
{
|
||||
Write-Host 'mongo is on path'
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host 'mongo not on path'
|
||||
exit 1
|
||||
}
|
||||
@@ -1,15 +1,14 @@
|
||||
################################################################################
|
||||
## File: Validate-7zip.ps1
|
||||
## Desc: Validate 7zip
|
||||
## File: Validate-WSL.ps1
|
||||
## Desc: Validate WSL CLI existst
|
||||
################################################################################
|
||||
|
||||
if (Get-Command -Name '7z')
|
||||
if (Get-Command -Name 'wsl')
|
||||
{
|
||||
Write-Host '7zip on path'
|
||||
Write-Host 'wsl is on path'
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host '7zip is not on path'
|
||||
Write-Host 'wsl not on path'
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -41,6 +41,8 @@ Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
|
||||
Install-Module -Name PowerShellGet -Force
|
||||
Set-PSRepository -InstallationPolicy Trusted -Name PSGallery
|
||||
|
||||
Write-Host "Install the latest Pester version"
|
||||
Install-Module Pester -Scope AllUsers -SkipPublisherCheck -Force
|
||||
|
||||
Write-Host "Disable Antivirus"
|
||||
Set-MpPreference -DisableRealtimeMonitoring $true
|
||||
|
||||
@@ -38,6 +38,8 @@ Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
|
||||
Install-Module -Name PowerShellGet -Force
|
||||
Set-PSRepository -InstallationPolicy Trusted -Name PSGallery
|
||||
|
||||
Write-Host "Install the latest Pester version"
|
||||
Install-Module Pester -Scope AllUsers -SkipPublisherCheck -Force
|
||||
|
||||
Write-Host "Disable Antivirus"
|
||||
Set-MpPreference -DisableRealtimeMonitoring $true
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
################################################################################
|
||||
## File: Install-WSL.ps1
|
||||
## Desc: Install Windows Subsystem for Linux
|
||||
################################################################################
|
||||
|
||||
Write-Host "Install Windows Subsystem for Linux"
|
||||
|
||||
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart
|
||||
@@ -22,6 +22,11 @@ $markdown += New-MDList -Style Unordered -Lines @(
|
||||
"Image Version: $env:ImageVersion"
|
||||
)
|
||||
|
||||
$markdown += New-MDHeader "Enabled windows optional features" -Level 2
|
||||
$markdown += New-MDList -Style Unordered -Lines @(
|
||||
"Windows Subsystem for Linux"
|
||||
)
|
||||
|
||||
$markdown += New-MDHeader "Installed Software" -Level 2
|
||||
$markdown += New-MDHeader "Language and Runtime" -Level 3
|
||||
|
||||
|
||||
8
images/win/scripts/Tests/Databases.Tests.ps1
Normal file
8
images/win/scripts/Tests/Databases.Tests.ps1
Normal file
@@ -0,0 +1,8 @@
|
||||
Describe "MongoDB" {
|
||||
It "<ToolName>" -TestCases @(
|
||||
@{ ToolName = "mongo" }
|
||||
@{ ToolName = "mongod" }
|
||||
) {
|
||||
"$ToolName --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
}
|
||||
36
images/win/scripts/Tests/Java.Tests.ps1
Normal file
36
images/win/scripts/Tests/Java.Tests.ps1
Normal file
@@ -0,0 +1,36 @@
|
||||
Describe "Java" {
|
||||
It "Java <DefaultJavaVersion> is default" -TestCases @(@{ DefaultJavaVersion = 8 }) {
|
||||
$actualJavaPath = Get-EnvironmentVariable "JAVA_HOME"
|
||||
$expectedJavaPath = Get-EnvironmentVariable "JAVA_HOME_${DefaultJavaVersion}_X64"
|
||||
|
||||
$actualJavaPath | Should -Not -BeNullOrEmpty
|
||||
$expectedJavaPath | Should -Not -BeNullOrEmpty
|
||||
$actualJavaPath | Should -Be $expectedJavaPath
|
||||
}
|
||||
|
||||
It "<ToolName>" -TestCases @(
|
||||
@{ ToolName = "java" }
|
||||
@{ ToolName = "mvn" }
|
||||
@{ ToolName = "ant" }
|
||||
@{ ToolName = "gradle" }
|
||||
) {
|
||||
"$ToolName -version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
|
||||
It "Java <Version>" -TestCases @(
|
||||
@{ Version = "1.7" }
|
||||
@{ Version = "1.8" }
|
||||
@{ Version = "11" }
|
||||
@{ Version = "13" }
|
||||
) {
|
||||
$versionNumber = $version.Split(".") | Select-Object -Last 1
|
||||
|
||||
$javaVariableValue = Get-EnvironmentVariable "JAVA_HOME_${versionNumber}_X64"
|
||||
$javaVariableValue | Should -Not -BeNullOrEmpty
|
||||
$javaPath = Join-Path $javaVariableValue "bin\java"
|
||||
|
||||
$result = Get-CommandResult "`"$javaPath`" -version"
|
||||
$result.ExitCode | Should -Be 0
|
||||
$result.Output[0] | Should -Match ([regex]::Escape("openjdk version `"${Version}."))
|
||||
}
|
||||
}
|
||||
1
images/win/scripts/Tests/RunAll-Tests.ps1
Normal file
1
images/win/scripts/Tests/RunAll-Tests.ps1
Normal file
@@ -0,0 +1 @@
|
||||
Invoke-PesterTests "*"
|
||||
17
images/win/scripts/Tests/Tools.Tests.ps1
Normal file
17
images/win/scripts/Tests/Tools.Tests.ps1
Normal file
@@ -0,0 +1,17 @@
|
||||
Describe "7-Zip" {
|
||||
It "7z" {
|
||||
"7z" | Should -ReturnZeroExitCode
|
||||
}
|
||||
}
|
||||
|
||||
Describe "CMake" {
|
||||
It "cmake" {
|
||||
"cmake --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Kind" {
|
||||
It "Kind" {
|
||||
"kind version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user