mirror of
https://github.com/actions/runner-images.git
synced 2025-12-13 20:56:47 +00:00
Merge branch 'master' of https://github.com/nikita-bykov/virtual-environments into pipx-windows
This commit is contained in:
@@ -2,10 +2,13 @@
|
|||||||
|
|
||||||
# Fix permissions for Homebrew
|
# Fix permissions for Homebrew
|
||||||
# https://github.com/actions/virtual-environments/issues/1568
|
# https://github.com/actions/virtual-environments/issues/1568
|
||||||
|
|
||||||
brew_folder="/home/linuxbrew/"
|
brew_folder="/home/linuxbrew/"
|
||||||
|
homebrew_user=$(cut -d: -f1 /etc/passwd | tail -1)
|
||||||
|
|
||||||
if [ -d "$brew_folder" ]; then
|
if [ -d "$brew_folder" ]; then
|
||||||
brew_folder_owner=$(ls -ld $brew_folder | awk '{print $3}')
|
brew_folder_owner=$(ls -ld $brew_folder | awk '{print $3}')
|
||||||
if [ "$USER" != "$brew_folder_owner" ]; then
|
if [ "$homebrew_user" != "$brew_folder_owner" ]; then
|
||||||
chown "$USER":docker -R $brew_folder
|
chown "$homebrew_user":docker -R $brew_folder
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -2,10 +2,13 @@
|
|||||||
|
|
||||||
# Fix permissions for the Rust folder
|
# Fix permissions for the Rust folder
|
||||||
# https://github.com/actions/virtual-environments/issues/572
|
# https://github.com/actions/virtual-environments/issues/572
|
||||||
|
|
||||||
rust_folder="/usr/share/rust"
|
rust_folder="/usr/share/rust"
|
||||||
|
rust_user=$(cut -d: -f1 /etc/passwd | tail -1)
|
||||||
|
|
||||||
if [ -d "$rust_folder" ]; then
|
if [ -d "$rust_folder" ]; then
|
||||||
rust_folder_owner=$(ls -ld $rust_folder | awk '{print $3}')
|
rust_folder_owner=$(ls -ld $rust_folder | awk '{print $3}')
|
||||||
if [ "$USER" != "$rust_folder_owner" ]; then
|
if [ "$rust_user" != "$rust_folder_owner" ]; then
|
||||||
chown "$USER":docker -R $rust_folder
|
chown "$rust_user":docker -R $rust_folder
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -24,3 +24,7 @@ then
|
|||||||
echo "PATH = $PATH"
|
echo "PATH = $PATH"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Clean yarn and npm cache
|
||||||
|
yarn cache clean
|
||||||
|
npm cache clean --force
|
||||||
22
images/macos/provision/assets/select-xamarin-sdk.sh
Normal file
22
images/macos/provision/assets/select-xamarin-sdk.sh
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "No Xamarin SDK specified."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
XAMARIN_SDK=$1
|
||||||
|
|
||||||
|
echo "Set Xamarin SDK to ${XAMARIN_SDK}"
|
||||||
|
FOLDERS_LIST=(
|
||||||
|
'/Library/Frameworks/Mono.framework/Versions'
|
||||||
|
'/Library/Frameworks/Xamarin.iOS.framework/Versions'
|
||||||
|
'/Library/Frameworks/Xamarin.Android.framework/Versions'
|
||||||
|
'/Library/Frameworks/Xamarin.Mac.framework/Versions'
|
||||||
|
)
|
||||||
|
|
||||||
|
for FOLDER in "${FOLDERS_LIST[@]}"
|
||||||
|
do
|
||||||
|
echo "Set Current folder for ${FOLDER}"
|
||||||
|
sudo rm -f ${FOLDER}/Current
|
||||||
|
sudo ln -s ${FOLDER}/${XAMARIN_SDK} ${FOLDER}/Current
|
||||||
|
done
|
||||||
@@ -16,9 +16,18 @@ fi
|
|||||||
# Put documentation to $HOME root
|
# Put documentation to $HOME root
|
||||||
cp $HOME/image-generation/output/software-report/systeminfo.txt $HOME/image-generation/output/software-report/systeminfo.md $HOME/
|
cp $HOME/image-generation/output/software-report/systeminfo.txt $HOME/image-generation/output/software-report/systeminfo.md $HOME/
|
||||||
|
|
||||||
|
# Put build vm assets scripts to proper directory
|
||||||
|
mkdir -p /usr/local/opt/$USER/scripts
|
||||||
|
mv $HOME/image-generation/assets/* /usr/local/opt/$USER/scripts
|
||||||
|
|
||||||
|
find /usr/local/opt/$USER/scripts -type f -name "*\.sh" -exec chmod +x {} \;
|
||||||
|
|
||||||
# Clean up npm cache which collected during image-generation
|
# Clean up npm cache which collected during image-generation
|
||||||
# we have to do that here because `npm install` is run in a few different places during image-generation
|
# we have to do that here because `npm install` is run in a few different places during image-generation
|
||||||
npm cache clean --force
|
npm cache clean --force
|
||||||
|
|
||||||
|
# Clean yarn cache
|
||||||
|
yarn cache clean
|
||||||
|
|
||||||
# Clean up temporary directories
|
# Clean up temporary directories
|
||||||
rm -rf ~/utils ~/image-generation
|
rm -rf ~/utils ~/image-generation
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
#!/bin/bash -e -o pipefail
|
#!/bin/bash -e -o pipefail
|
||||||
|
source ~/utils/utils.sh
|
||||||
|
|
||||||
echo "Installing Chrome..."
|
echo "Installing Chrome..."
|
||||||
brew cask install google-chrome
|
brew_cask_install_ignoring_sha256 "google-chrome"
|
||||||
|
|
||||||
echo "Installing Chrome Driver"
|
echo "Installing Chrome Driver"
|
||||||
brew cask install chromedriver
|
brew cask install chromedriver
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ binst_common_utils=(
|
|||||||
gh
|
gh
|
||||||
p7zip
|
p7zip
|
||||||
ant
|
ant
|
||||||
yamllint
|
|
||||||
aria2
|
aria2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
18
images/macos/provision/core/pipx-packages.sh
Normal file
18
images/macos/provision/core/pipx-packages.sh
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
source ~/utils/utils.sh
|
||||||
|
|
||||||
|
export PATH="$PATH:/opt/pipx_bin"
|
||||||
|
|
||||||
|
toolset=$(get_toolset_path)
|
||||||
|
pipx_packages=$(jq -r ".pipx[] .package" $toolset)
|
||||||
|
|
||||||
|
for package in $pipx_packages; do
|
||||||
|
python_version=$(jq -r ".pipx[] | select(.package == \"$package\") .python" $toolset)
|
||||||
|
if [ "$python_version" != "null" ]; then
|
||||||
|
python_path="$HOME/hostedtoolcache/Python/$python_version*/x64/bin/python$python_version"
|
||||||
|
echo "Install $package into python $python_path"
|
||||||
|
pipx install $package --python $python_path
|
||||||
|
else
|
||||||
|
echo "Install $package into default python"
|
||||||
|
pipx install $package
|
||||||
|
fi
|
||||||
|
done
|
||||||
@@ -17,3 +17,13 @@ echo "Brew Installing Python 2"
|
|||||||
brew tap-new --no-git local/python2
|
brew tap-new --no-git local/python2
|
||||||
FORMULA_PATH=$(brew extract python@2 local/python2 | grep "Homebrew/Library/Taps")
|
FORMULA_PATH=$(brew extract python@2 local/python2 | grep "Homebrew/Library/Taps")
|
||||||
brew install $FORMULA_PATH
|
brew install $FORMULA_PATH
|
||||||
|
|
||||||
|
echo "Installing pipx"
|
||||||
|
export PIPX_BIN_DIR=/usr/local/opt/pipx_bin
|
||||||
|
export PIPX_HOME=/usr/local/opt/pipx
|
||||||
|
|
||||||
|
brew install pipx
|
||||||
|
|
||||||
|
echo "export PIPX_BIN_DIR=${PIPX_BIN_DIR}" >> "${HOME}/.bashrc"
|
||||||
|
echo "export PIPX_HOME=${PIPX_HOME}" >> "${HOME}/.bashrc"
|
||||||
|
echo 'export PATH="$PIPX_BIN_DIR:$PATH"' >> "${HOME}/.bashrc"
|
||||||
|
|||||||
@@ -108,3 +108,16 @@ verlte() {
|
|||||||
sortedVersion=$(echo -e "$1\n$2" | sort -V | head -n1)
|
sortedVersion=$(echo -e "$1\n$2" | sort -V | head -n1)
|
||||||
[ "$1" = "$sortedVersion" ]
|
[ "$1" = "$sortedVersion" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
brew_cask_install_ignoring_sha256() {
|
||||||
|
local TOOL_NAME=$1
|
||||||
|
|
||||||
|
CASK_DIR="$(brew --repo homebrew/cask)/Casks"
|
||||||
|
chmod a+w "$CASK_DIR/$TOOL_NAME.rb"
|
||||||
|
SHA=$(grep "sha256" "$CASK_DIR/$TOOL_NAME.rb" | awk '{print $2}')
|
||||||
|
sed -i '' "s/$SHA/:no_check/" "$CASK_DIR/$TOOL_NAME.rb"
|
||||||
|
brew cask install $TOOL_NAME
|
||||||
|
pushd $CASK_DIR
|
||||||
|
git checkout HEAD -- "$TOOL_NAME.rb"
|
||||||
|
popd
|
||||||
|
}
|
||||||
@@ -96,6 +96,11 @@ function Get-PipVersion {
|
|||||||
return "${versionPart1} ${versionPart2} ${versionPart3}"
|
return "${versionPart1} ${versionPart2} ${versionPart3}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Get-PipxVersion {
|
||||||
|
$pipxVersion = Run-Command "pipx --version" -SuppressStderr
|
||||||
|
return "Pipx $pipxVersion"
|
||||||
|
}
|
||||||
|
|
||||||
function Get-NVMNodeVersionList {
|
function Get-NVMNodeVersionList {
|
||||||
$nvmPath = Join-Path $env:HOME ".nvm" "nvm.sh"
|
$nvmPath = Join-Path $env:HOME ".nvm" "nvm.sh"
|
||||||
$nvmInitCommand = ". ${nvmPath} > /dev/null 2>&1 || true"
|
$nvmInitCommand = ". ${nvmPath} > /dev/null 2>&1 || true"
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ $npmVersion = Run-Command "npm --version"
|
|||||||
$yarnVersion = Run-Command "yarn --version"
|
$yarnVersion = Run-Command "yarn --version"
|
||||||
$nugetVersion = Run-Command "nuget help" | Select-Object -First 1 | Take-Part -Part 2
|
$nugetVersion = Run-Command "nuget help" | Select-Object -First 1 | Take-Part -Part 2
|
||||||
$pip3Version = Get-PipVersion -Version 3
|
$pip3Version = Get-PipVersion -Version 3
|
||||||
|
$pipxVersion = Get-PipxVersion
|
||||||
$condaVersion = Invoke-Expression "conda --version"
|
$condaVersion = Invoke-Expression "conda --version"
|
||||||
$rubyGemsVersion = Run-Command "gem --version"
|
$rubyGemsVersion = Run-Command "gem --version"
|
||||||
$composerVersion = Run-Command "composer --version" | Take-Part -Part 2
|
$composerVersion = Run-Command "composer --version" | Take-Part -Part 2
|
||||||
@@ -99,6 +100,7 @@ if ($os.IsLessThanBigSur) {
|
|||||||
|
|
||||||
$markdown += New-MDList -Style Unordered -Lines @(
|
$markdown += New-MDList -Style Unordered -Lines @(
|
||||||
"Pip ${pip3Version}",
|
"Pip ${pip3Version}",
|
||||||
|
$pipxVersion,
|
||||||
$bundlerVersion,
|
$bundlerVersion,
|
||||||
"Carthage ${carthageVersion}",
|
"Carthage ${carthageVersion}",
|
||||||
"CocoaPods ${cocoaPodsVersion}",
|
"CocoaPods ${cocoaPodsVersion}",
|
||||||
|
|||||||
@@ -43,6 +43,11 @@
|
|||||||
"type": "shell",
|
"type": "shell",
|
||||||
"inline": "mkdir ~/image-generation"
|
"inline": "mkdir ~/image-generation"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "./provision/assets",
|
||||||
|
"destination": "~/image-generation/"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"source": "./tests",
|
"source": "./tests",
|
||||||
@@ -181,7 +186,8 @@
|
|||||||
"./provision/core/edge.sh",
|
"./provision/core/edge.sh",
|
||||||
"./provision/core/firefox.sh",
|
"./provision/core/firefox.sh",
|
||||||
"./provision/core/toolcache-high-sierra.sh",
|
"./provision/core/toolcache-high-sierra.sh",
|
||||||
"./provision/core/pypy.sh"
|
"./provision/core/pypy.sh",
|
||||||
|
"./provision/core/pipx-packages.sh"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -43,6 +43,11 @@
|
|||||||
"type": "shell",
|
"type": "shell",
|
||||||
"inline": "mkdir ~/image-generation"
|
"inline": "mkdir ~/image-generation"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "./provision/assets",
|
||||||
|
"destination": "~/image-generation/"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"source": "./tests",
|
"source": "./tests",
|
||||||
@@ -186,7 +191,8 @@
|
|||||||
"./provision/core/miniconda.sh",
|
"./provision/core/miniconda.sh",
|
||||||
"./provision/core/xcode-postbuild.sh",
|
"./provision/core/xcode-postbuild.sh",
|
||||||
"./provision/core/toolcache.sh",
|
"./provision/core/toolcache.sh",
|
||||||
"./provision/core/pypy.sh"
|
"./provision/core/pypy.sh",
|
||||||
|
"./provision/core/pipx-packages.sh"
|
||||||
],
|
],
|
||||||
"environment_vars": [
|
"environment_vars": [
|
||||||
"GITHUB_FEED_TOKEN={{user `github_feed_token`}}"
|
"GITHUB_FEED_TOKEN={{user `github_feed_token`}}"
|
||||||
|
|||||||
@@ -43,6 +43,11 @@
|
|||||||
"type": "shell",
|
"type": "shell",
|
||||||
"inline": "mkdir ~/image-generation"
|
"inline": "mkdir ~/image-generation"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "./provision/assets",
|
||||||
|
"destination": "~/image-generation/"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"source": "./tests",
|
"source": "./tests",
|
||||||
@@ -185,7 +190,8 @@
|
|||||||
"./provision/core/firefox.sh",
|
"./provision/core/firefox.sh",
|
||||||
"./provision/core/xcode-postbuild.sh",
|
"./provision/core/xcode-postbuild.sh",
|
||||||
"./provision/core/toolcache.sh",
|
"./provision/core/toolcache.sh",
|
||||||
"./provision/core/pypy.sh"
|
"./provision/core/pypy.sh",
|
||||||
|
"./provision/core/pipx-packages.sh"
|
||||||
],
|
],
|
||||||
"environment_vars": [
|
"environment_vars": [
|
||||||
"GITHUB_FEED_TOKEN={{user `github_feed_token`}}"
|
"GITHUB_FEED_TOKEN={{user `github_feed_token`}}"
|
||||||
|
|||||||
@@ -43,6 +43,11 @@
|
|||||||
"type": "shell",
|
"type": "shell",
|
||||||
"inline": "mkdir ~/image-generation"
|
"inline": "mkdir ~/image-generation"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "./provision/assets",
|
||||||
|
"destination": "~/image-generation/"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"source": "./tests",
|
"source": "./tests",
|
||||||
@@ -181,7 +186,8 @@
|
|||||||
"./provision/core/chrome.sh",
|
"./provision/core/chrome.sh",
|
||||||
"./provision/core/edge.sh",
|
"./provision/core/edge.sh",
|
||||||
"./provision/core/firefox.sh",
|
"./provision/core/firefox.sh",
|
||||||
"./provision/core/toolcache.sh"
|
"./provision/core/toolcache.sh",
|
||||||
|
"./provision/core/pipx-packages.sh"
|
||||||
],
|
],
|
||||||
"environment_vars": [
|
"environment_vars": [
|
||||||
"GITHUB_FEED_TOKEN={{user `github_feed_token`}}"
|
"GITHUB_FEED_TOKEN={{user `github_feed_token`}}"
|
||||||
|
|||||||
@@ -3,10 +3,6 @@ Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1"
|
|||||||
$os = Get-OSVersion
|
$os = Get-OSVersion
|
||||||
|
|
||||||
Describe "Linters" {
|
Describe "Linters" {
|
||||||
It "yamllint" {
|
|
||||||
"yamllint --version" | Should -ReturnZeroExitCode
|
|
||||||
}
|
|
||||||
|
|
||||||
It "SwiftLint" -Skip:($os.IsHighSierra) {
|
It "SwiftLint" -Skip:($os.IsHighSierra) {
|
||||||
"swiftlint version" | Should -ReturnZeroExitCode
|
"swiftlint version" | Should -ReturnZeroExitCode
|
||||||
}
|
}
|
||||||
|
|||||||
7
images/macos/tests/PipxPackages.Tests.ps1
Normal file
7
images/macos/tests/PipxPackages.Tests.ps1
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Describe "PipxPackages" {
|
||||||
|
$pipxToolset = Get-ToolsetValue "pipx"
|
||||||
|
$testCases = $pipxToolset | ForEach-Object { @{package = $_.package; cmd = $_.cmd} }
|
||||||
|
It "<package>" -TestCases $testCases {
|
||||||
|
"$cmd" | Should -ReturnZeroExitCode
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -32,6 +32,10 @@ Describe "Python" {
|
|||||||
"pip3 --version" | Should -ReturnZeroExitCode
|
"pip3 --version" | Should -ReturnZeroExitCode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
It "Pipx is available" {
|
||||||
|
"pipx --version" | Should -ReturnZeroExitCode
|
||||||
|
}
|
||||||
|
|
||||||
It "Pip 3 and Python 3 came from the same brew formula" {
|
It "Pip 3 and Python 3 came from the same brew formula" {
|
||||||
$pip3Path = Split-Path (readlink (which pip3))
|
$pip3Path = Split-Path (readlink (which pip3))
|
||||||
$python3Path = Split-Path (readlink (which python3))
|
$python3Path = Split-Path (readlink (which python3))
|
||||||
|
|||||||
@@ -194,5 +194,11 @@
|
|||||||
"3.6"
|
"3.6"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"pipx": [
|
||||||
|
{
|
||||||
|
"package": "yamllint",
|
||||||
|
"cmd": "yamllint --version"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -254,5 +254,11 @@
|
|||||||
"1.15.*"
|
"1.15.*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"pipx": [
|
||||||
|
{
|
||||||
|
"package": "yamllint",
|
||||||
|
"cmd": "yamllint --version"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -163,5 +163,11 @@
|
|||||||
"1.15.*"
|
"1.15.*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"pipx": [
|
||||||
|
{
|
||||||
|
"package": "yamllint",
|
||||||
|
"cmd": "yamllint --version"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -88,5 +88,11 @@
|
|||||||
"1.15.*"
|
"1.15.*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"pipx": [
|
||||||
|
{
|
||||||
|
"package": "yamllint",
|
||||||
|
"cmd": "yamllint --version"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
| Announcements |
|
| Announcements |
|
||||||
|-|
|
|-|
|
||||||
|
| [[Ubuntu] [Windows] Boost 1.69.0 will be deprecated on November, 10](https://github.com/actions/virtual-environments/issues/1847) |
|
||||||
| [[In Discussion] Git internal tools will be removed from PATH Windows images and replaced with MSYS2 tools](https://github.com/actions/virtual-environments/issues/1525) |
|
| [[In Discussion] Git internal tools will be removed from PATH Windows images and replaced with MSYS2 tools](https://github.com/actions/virtual-environments/issues/1525) |
|
||||||
***
|
***
|
||||||
# Microsoft Windows Server 2016 Datacenter
|
# Microsoft Windows Server 2016 Datacenter
|
||||||
- OS Version: 10.0.14393 Build 3930
|
- OS Version: 10.0.14393 Build 3986
|
||||||
- Image Version: 20201012.1
|
- Image Version: 20201020.1
|
||||||
|
|
||||||
## Installed Software
|
## Installed Software
|
||||||
### Language and Runtime
|
### Language and Runtime
|
||||||
@@ -14,7 +15,7 @@
|
|||||||
- Java 13.0.2
|
- Java 13.0.2
|
||||||
- Python 3.7.9
|
- Python 3.7.9
|
||||||
- Ruby 2.5.8p224
|
- Ruby 2.5.8p224
|
||||||
- Go 1.14.9
|
- Go 1.14.10
|
||||||
- PHP 7.4.11
|
- PHP 7.4.11
|
||||||
- Julia 1.5.2
|
- Julia 1.5.2
|
||||||
- Perl 5.32.0
|
- Perl 5.32.0
|
||||||
@@ -25,46 +26,46 @@
|
|||||||
- Vcpkg 2020.06.15
|
- Vcpkg 2020.06.15
|
||||||
- NPM 6.14.8
|
- NPM 6.14.8
|
||||||
- Yarn 1.22.10
|
- Yarn 1.22.10
|
||||||
- pip 20.2.3 (python 3.7)
|
- pip 20.2.4 (python 3.7)
|
||||||
- Miniconda 4.6.14
|
- Miniconda 4.8.3
|
||||||
- RubyGems 3.1.4
|
- RubyGems 3.1.4
|
||||||
- Helm 3.3.4
|
- Helm 3.3.4
|
||||||
- Composer 1.10.13
|
- Composer 1.10.15
|
||||||
- NuGet 5.7.0.6726
|
- NuGet 5.7.0.6726
|
||||||
|
|
||||||
### Project Management
|
### Project Management
|
||||||
- Ant 1.10.9
|
- Ant 1.10.9
|
||||||
- Maven 3.6.3
|
- Maven 3.6.3
|
||||||
- Gradle 6.6
|
- Gradle 6.7
|
||||||
- sbt 1.4.0
|
- sbt 1.4.0
|
||||||
|
|
||||||
### Tools
|
### Tools
|
||||||
- azcopy 10.6.0
|
- azcopy 10.6.0
|
||||||
- Bazel 3.6.0
|
- Bazel 3.7.0
|
||||||
- Bazelisk 1.7.1
|
- Bazelisk 1.7.3
|
||||||
- CMake 3.18.4
|
- CMake 3.18.4
|
||||||
- CodeQL Action Bundle 2.2.5
|
- CodeQL Action Bundle 2.3.0
|
||||||
- R 4.0.3
|
- R 4.0.3
|
||||||
- Docker 19.03.12
|
- Docker 19.03.12
|
||||||
- Docker-compose 1.27.2
|
- Docker-compose 1.27.4
|
||||||
- Git 2.28.0
|
- Git 2.29.0
|
||||||
- Git LFS 2.11.0
|
- Git LFS 2.12.0
|
||||||
- Google Cloud SDK 313.0.1
|
- Google Cloud SDK 315.0.0
|
||||||
- InnoSetup 6.0.5
|
- InnoSetup 6.0.5
|
||||||
- jq 1.6
|
- jq 1.6
|
||||||
- Kubectl 1.19.1
|
- Kubectl 1.19.3
|
||||||
- Kind 0.9.0
|
- Kind 0.9.0
|
||||||
- Mingw-w64 8.1.0
|
- Mingw-w64 8.1.0
|
||||||
- Mercurial 5.0
|
- Mercurial 5.0
|
||||||
- NSIS v3.06.1
|
- NSIS v3.06.1
|
||||||
- Newman 5.2.0
|
- Newman 5.2.0
|
||||||
- OpenSSL 1.1.1
|
- OpenSSL 1.1.1
|
||||||
- Packer 1.6.3
|
- Packer 1.6.4
|
||||||
- Pulumi v2.11.2
|
- Pulumi v2.12.0
|
||||||
- Subversion (SVN) 1.14.0
|
- Subversion (SVN) 1.14.0
|
||||||
- ghc 8.10.2
|
- ghc 8.10.2
|
||||||
- Cabal 3.2.0.0
|
- Cabal 3.2.0.0
|
||||||
- Stack 2.3.3
|
- Stack 2.5.1
|
||||||
- WinAppDriver 1.1.1809.18001
|
- WinAppDriver 1.1.1809.18001
|
||||||
- zstd 1.4.5
|
- zstd 1.4.5
|
||||||
- VSWhere 2.8.4
|
- VSWhere 2.8.4
|
||||||
@@ -72,12 +73,12 @@
|
|||||||
- yamllint 1.25.0
|
- yamllint 1.25.0
|
||||||
|
|
||||||
### CLI Tools
|
### CLI Tools
|
||||||
- Azure CLI 2.12.1
|
- Azure CLI 2.13.0
|
||||||
- Azure DevOps CLI extension 0.18.0
|
- Azure DevOps CLI extension 0.18.0
|
||||||
- Azure Dev Spaces CLI 1.0.20200921.3
|
- Azure Dev Spaces CLI 1.0.20200921.3
|
||||||
- AWS CLI 2.0.56
|
- AWS CLI 2.0.57
|
||||||
- AWS SAM CLI 1.6.2
|
- AWS SAM CLI 1.6.2
|
||||||
- AWS Session Manager CLI 1.1.61.0
|
- AWS Session Manager CLI 1.2.7.0
|
||||||
- Alibaba Cloud CLI 3.0.60
|
- Alibaba Cloud CLI 3.0.60
|
||||||
- Cloud Foundry CLI 6.53.0
|
- Cloud Foundry CLI 6.53.0
|
||||||
- Hub CLI 2.14.2
|
- Hub CLI 2.14.2
|
||||||
@@ -93,11 +94,11 @@
|
|||||||
- cargo-outdated v0.9.11
|
- cargo-outdated v0.9.11
|
||||||
|
|
||||||
### Browsers and webdrivers
|
### Browsers and webdrivers
|
||||||
- Google Chrome 86.0.4240.75
|
- Google Chrome 86.0.4240.111
|
||||||
- Chrome Driver 86.0.4240.22
|
- Chrome Driver 86.0.4240.22
|
||||||
- Microsoft Edge 86.0.622.38
|
- Microsoft Edge 86.0.622.48
|
||||||
- Microsoft Edge Driver 86.0.622.38
|
- Microsoft Edge Driver 86.0.622.48
|
||||||
- Mozilla Firefox 81.0.1
|
- Mozilla Firefox 82.0
|
||||||
- Gecko Driver 0.27.0
|
- Gecko Driver 0.27.0
|
||||||
- IE Driver 3.150.1.0
|
- IE Driver 3.150.1.0
|
||||||
|
|
||||||
@@ -137,8 +138,8 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
|||||||
| 1.11.13 | x64 | GOROOT_1_11_X64 |
|
| 1.11.13 | x64 | GOROOT_1_11_X64 |
|
||||||
| 1.12.17 | x64 | GOROOT_1_12_X64 |
|
| 1.12.17 | x64 | GOROOT_1_12_X64 |
|
||||||
| 1.13.15 | x64 | GOROOT_1_13_X64 |
|
| 1.13.15 | x64 | GOROOT_1_13_X64 |
|
||||||
| 1.14.9 (Default) | x64 | GOROOT_1_14_X64 |
|
| 1.14.10 (Default) | x64 | GOROOT_1_14_X64 |
|
||||||
| 1.15.2 | x64 | GOROOT_1_15_X64 |
|
| 1.15.3 | x64 | GOROOT_1_15_X64 |
|
||||||
|
|
||||||
|
|
||||||
#### Node
|
#### Node
|
||||||
@@ -147,7 +148,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
|||||||
| 8.17.0 | x64 |
|
| 8.17.0 | x64 |
|
||||||
| 10.22.1 | x64 |
|
| 10.22.1 | x64 |
|
||||||
| 12.19.0 | x64 |
|
| 12.19.0 | x64 |
|
||||||
| 14.13.1 | x64 |
|
| 14.14.0 | x64 |
|
||||||
|
|
||||||
|
|
||||||
#### Python
|
#### Python
|
||||||
@@ -158,6 +159,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
|||||||
| 3.6.8 | x64, x86 |
|
| 3.6.8 | x64, x86 |
|
||||||
| 3.7.9 (Default) | x64, x86 |
|
| 3.7.9 (Default) | x64, x86 |
|
||||||
| 3.8.6 | x64, x86 |
|
| 3.8.6 | x64, x86 |
|
||||||
|
| 3.9.0 | x64, x86 |
|
||||||
|
|
||||||
|
|
||||||
#### Ruby
|
#### Ruby
|
||||||
@@ -200,6 +202,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
|||||||
|
|
||||||
### Database tools
|
### Database tools
|
||||||
- Azure CosmosDb Emulator 2.11.6.0
|
- Azure CosmosDb Emulator 2.11.6.0
|
||||||
|
- DacFx 15.0.4897.1
|
||||||
- SQLPS 1.0
|
- SQLPS 1.0
|
||||||
- MySQL 5.7.21.0
|
- MySQL 5.7.21.0
|
||||||
|
|
||||||
@@ -207,7 +210,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
|||||||
### Visual Studio Enterprise 2017
|
### Visual Studio Enterprise 2017
|
||||||
| Name | Version | Path |
|
| Name | Version | Path |
|
||||||
| ----------------------------- | --------------- | -------------------------------------------------------------- |
|
| ----------------------------- | --------------- | -------------------------------------------------------------- |
|
||||||
| Visual Studio Enterprise 2017 | 15.9.28307.1259 | C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise |
|
| Visual Studio Enterprise 2017 | 15.9.28307.1274 | C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise |
|
||||||
|
|
||||||
#### Workloads, components and extensions:
|
#### Workloads, components and extensions:
|
||||||
|
|
||||||
@@ -476,20 +479,20 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
|||||||
|
|
||||||
### .NET Core SDK
|
### .NET Core SDK
|
||||||
`Location C:\Program Files\dotnet\sdk`
|
`Location C:\Program Files\dotnet\sdk`
|
||||||
- 1.1.14 2.1.300 2.1.301 2.1.302 2.1.401 2.1.402 2.1.403 2.1.500 2.1.502 2.1.503 2.1.504 2.1.505 2.1.506 2.1.507 2.1.508 2.1.509 2.1.510 2.1.511 2.1.512 2.1.513 2.1.514 2.1.515 2.1.516 2.1.517 2.1.518 2.1.602 2.1.603 2.1.604 2.1.605 2.1.606 2.1.607 2.1.608 2.1.609 2.1.610 2.1.611 2.1.612 2.1.613 2.1.614 2.1.615 2.1.700 2.1.701 2.1.801 2.1.802 2.1.803 2.1.804 2.1.805 2.1.806 2.1.807 2.1.808 2.1.809 2.1.810 3.1.100 3.1.101 3.1.102 3.1.103 3.1.104 3.1.105 3.1.106 3.1.107 3.1.108 3.1.200 3.1.201 3.1.202 3.1.300 3.1.301 3.1.302 3.1.401 3.1.402
|
- 1.1.14 2.1.300 2.1.301 2.1.302 2.1.401 2.1.402 2.1.403 2.1.500 2.1.502 2.1.503 2.1.504 2.1.505 2.1.506 2.1.507 2.1.508 2.1.509 2.1.510 2.1.511 2.1.512 2.1.513 2.1.514 2.1.515 2.1.516 2.1.517 2.1.518 2.1.519 2.1.602 2.1.603 2.1.604 2.1.605 2.1.606 2.1.607 2.1.608 2.1.609 2.1.610 2.1.611 2.1.612 2.1.613 2.1.614 2.1.615 2.1.616 2.1.700 2.1.701 2.1.801 2.1.802 2.1.803 2.1.804 2.1.805 2.1.806 2.1.807 2.1.808 2.1.809 2.1.810 2.1.811 3.1.100 3.1.101 3.1.102 3.1.103 3.1.104 3.1.105 3.1.106 3.1.107 3.1.108 3.1.109 3.1.200 3.1.201 3.1.202 3.1.300 3.1.301 3.1.302 3.1.401 3.1.402 3.1.403
|
||||||
|
|
||||||
### .NET Core Runtime
|
### .NET Core Runtime
|
||||||
`Location: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All`
|
`Location: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All`
|
||||||
- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22
|
- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 2.1.23
|
||||||
|
|
||||||
`Location: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App`
|
`Location: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App`
|
||||||
- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8
|
- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 2.1.23 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9
|
||||||
|
|
||||||
`Location: C:\Program Files\dotnet\shared\Microsoft.NETCore.App`
|
`Location: C:\Program Files\dotnet\shared\Microsoft.NETCore.App`
|
||||||
- 1.0.16 1.1.13 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8
|
- 1.0.16 1.1.13 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 2.1.23 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9
|
||||||
|
|
||||||
`Location: C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App`
|
`Location: C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App`
|
||||||
- 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8
|
- 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9
|
||||||
|
|
||||||
### .NET Framework
|
### .NET Framework
|
||||||
`Type: Developer Pack`
|
`Type: Developer Pack`
|
||||||
@@ -518,7 +521,7 @@ All other versions are saved but not installed.
|
|||||||
| Pester | 3.4.0<br>5.0.4 |
|
| Pester | 3.4.0<br>5.0.4 |
|
||||||
| PowerShellGet | 1.0.0.1<br>2.2.4.1<br>2.2.5 |
|
| PowerShellGet | 1.0.0.1<br>2.2.4.1<br>2.2.5 |
|
||||||
| PSWindowsUpdate | 2.2.0.2 |
|
| PSWindowsUpdate | 2.2.0.2 |
|
||||||
| SqlServer | 21.1.18228 |
|
| SqlServer | 21.1.18229 |
|
||||||
| VSSetup | 2.2.16 |
|
| VSSetup | 2.2.16 |
|
||||||
|
|
||||||
### Android
|
### Android
|
||||||
|
|||||||
23
images/win/scripts/Installers/Configure-Shell.ps1
Normal file
23
images/win/scripts/Installers/Configure-Shell.ps1
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Create shells folder
|
||||||
|
$shellPath = "C:\shells"
|
||||||
|
New-Item -Path $shellPath -ItemType Directory | Out-Null
|
||||||
|
|
||||||
|
# sh and bash <--> C:\msys64\usr\bin\bash.exe
|
||||||
|
New-Item -ItemType SymbolicLink -Path "$shellPath\bash.exe" -Target "C:\msys64\usr\bin\bash.exe" | Out-Null
|
||||||
|
New-Item -ItemType SymbolicLink -Path "$shellPath\sh.exe" -Target "C:\msys64\usr\bin\sh.exe" | Out-Null
|
||||||
|
|
||||||
|
# WSL is available on Windows Server 2019
|
||||||
|
if (Test-IsWin19)
|
||||||
|
{
|
||||||
|
# winbash <--> C:\Windows\System32\bash.exe
|
||||||
|
New-Item -ItemType SymbolicLink -Path "$shellPath\winbash.exe" -Target "$env:SystemRoot\System32\bash.exe" | Out-Null
|
||||||
|
}
|
||||||
|
|
||||||
|
# gitbash <--> C:\Program Files\Git\bin\bash.exe
|
||||||
|
New-Item -ItemType SymbolicLink -Path "$shellPath\gitbash.exe" -Target "$env:ProgramFiles\Git\bin\bash.exe" | Out-Null
|
||||||
|
|
||||||
|
# msysbash <--> C:\msys64\usr\bin\bash.exe
|
||||||
|
New-Item -ItemType SymbolicLink -Path "$shellPath\msysbash.exe" -Target "C:\msys64\usr\bin\bash.exe" | Out-Null
|
||||||
|
|
||||||
|
# Add shells to PATH
|
||||||
|
Add-MachinePathItem $shellPath
|
||||||
@@ -30,3 +30,7 @@ New-Item -Path $winInstallDir -ItemType Directory -Force
|
|||||||
|
|
||||||
# Remove AllUsersAllHosts profile
|
# Remove AllUsersAllHosts profile
|
||||||
Remove-Item $profile.AllUsersAllHosts -Force
|
Remove-Item $profile.AllUsersAllHosts -Force
|
||||||
|
|
||||||
|
# Clean yarn and npm cache
|
||||||
|
yarn cache clean
|
||||||
|
npm cache clean --force
|
||||||
@@ -26,7 +26,7 @@ Install-Binary -Url $downloadUrl `
|
|||||||
"/SP-", `
|
"/SP-", `
|
||||||
"/CLOSEAPPLICATIONS", `
|
"/CLOSEAPPLICATIONS", `
|
||||||
"/RESTARTAPPLICATIONS", `
|
"/RESTARTAPPLICATIONS", `
|
||||||
"/o:PathOption=CmdTools", `
|
"/o:PathOption=Cmd", `
|
||||||
"/o:BashTerminalOption=ConHost", `
|
"/o:BashTerminalOption=ConHost", `
|
||||||
"/o:EnableSymlinks=Enabled", `
|
"/o:EnableSymlinks=Enabled", `
|
||||||
"/COMPONENTS=gitlfs")
|
"/COMPONENTS=gitlfs")
|
||||||
@@ -36,15 +36,5 @@ Choco-Install -PackageName hub
|
|||||||
# Disable GCM machine-wide
|
# Disable GCM machine-wide
|
||||||
[Environment]::SetEnvironmentVariable("GCM_INTERACTIVE", "Never", [System.EnvironmentVariableTarget]::Machine)
|
[Environment]::SetEnvironmentVariable("GCM_INTERACTIVE", "Never", [System.EnvironmentVariableTarget]::Machine)
|
||||||
|
|
||||||
Add-MachinePathItem "C:\Program Files\Git\bin"
|
|
||||||
|
|
||||||
if (Test-IsWin16) {
|
|
||||||
$env:Path += ";$env:ProgramFiles\Git\usr\bin\"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add well-known SSH host keys to ssh_known_hosts
|
|
||||||
ssh-keyscan -t rsa github.com >> "C:\Program Files\Git\etc\ssh\ssh_known_hosts"
|
|
||||||
ssh-keyscan -t rsa ssh.dev.azure.com >> "C:\Program Files\Git\etc\ssh\ssh_known_hosts"
|
|
||||||
|
|
||||||
Invoke-PesterTests -TestFile "Git" -TestName "Git"
|
Invoke-PesterTests -TestFile "Git" -TestName "Git"
|
||||||
Invoke-PesterTests -TestFile "CLI.Tools" -TestName "Hub CLI"
|
Invoke-PesterTests -TestFile "CLI.Tools" -TestName "Hub CLI"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ Choco-Install -PackageName mingw
|
|||||||
|
|
||||||
# Make a copy of mingw32-make.exe to make.exe, which is a more discoverable name
|
# Make a copy of mingw32-make.exe to make.exe, which is a more discoverable name
|
||||||
# and so the same command line can be used on Windows as on macOS and Linux
|
# and so the same command line can be used on Windows as on macOS and Linux
|
||||||
$path = where.exe mingw32-make.exe | Get-Item
|
$path = Get-Command mingw32-make.exe -CommandType All | Where-Object { $_.Path.Contains("C:\ProgramData\Chocolatey") } | Get-Item
|
||||||
Copy-Item -Path $path -Destination (Join-Path $path.Directory 'make.exe')
|
Copy-Item -Path $path -Destination (Join-Path $path.Directory 'make.exe')
|
||||||
|
|
||||||
Invoke-PesterTests -TestFile "Tools" -TestName "Mingw64"
|
Invoke-PesterTests -TestFile "Tools" -TestName "Mingw64"
|
||||||
|
|||||||
@@ -9,35 +9,19 @@
|
|||||||
|
|
||||||
$dash = "-" * 40
|
$dash = "-" * 40
|
||||||
|
|
||||||
$origPath = $env:PATH
|
# Downloading msys2
|
||||||
$gitPath = "$env:ProgramFiles\Git"
|
$msys2Release = "https://api.github.com/repos/msys2/msys2-installer/releases/latest"
|
||||||
|
$msys2Uri = ((Invoke-RestMethod $msys2Release).assets | Where-Object {
|
||||||
$msys2_release = "https://api.github.com/repos/msys2/msys2-installer/releases/latest"
|
$_.name -match "x86_64" -and $_.name.EndsWith("sfx.exe") }).browser_download_url
|
||||||
|
|
||||||
$msys2Uri = ((Invoke-RestMethod $msys2_release).assets | Where-Object {
|
|
||||||
$_.name -match "x86_64" -and $_.name.EndsWith("tar.xz") }).browser_download_url
|
|
||||||
|
|
||||||
# Download the latest msys2 x86_64, filename includes release date
|
|
||||||
Write-Host "Starting msys2 download using $($msys2Uri.split('/')[-1])"
|
|
||||||
$msys2File = Start-DownloadWithRetry -Url $msys2Uri
|
$msys2File = Start-DownloadWithRetry -Url $msys2Uri
|
||||||
Write-Host "Finished download"
|
|
||||||
|
|
||||||
# nix style path for tar
|
# extract sfx.exe to C:\
|
||||||
$msys2FileU = "/$msys2File".replace(':', '').replace('\', '/')
|
|
||||||
|
|
||||||
# Git tar needs exe's from mingw64\bin
|
|
||||||
$env:PATH = "$gitPath\usr\bin;$gitPath\mingw64\bin;$origPath"
|
|
||||||
|
|
||||||
$tar = "$gitPath\usr\bin\tar.exe"
|
|
||||||
|
|
||||||
# extract tar.xz to C:\
|
|
||||||
Write-Host "Starting msys2 extraction"
|
Write-Host "Starting msys2 extraction"
|
||||||
&$tar -xJf $msys2FileU -C /c/
|
& $msys2File -y -oC:\
|
||||||
Remove-Item $msys2File
|
|
||||||
Write-Host "Finished extraction"
|
Write-Host "Finished extraction"
|
||||||
|
|
||||||
# Add msys2 bin tools folders to PATH temporary
|
# Add msys2 bin tools folders to PATH temporary
|
||||||
$env:PATH = "C:\msys64\mingw64\bin;C:\msys64\usr\bin;$origPath"
|
$env:PATH = "C:\msys64\mingw64\bin;C:\msys64\usr\bin;$env:PATH"
|
||||||
|
|
||||||
Write-Host "`n$dash bash pacman-key --init"
|
Write-Host "`n$dash bash pacman-key --init"
|
||||||
bash.exe -c "pacman-key --init 2>&1"
|
bash.exe -c "pacman-key --init 2>&1"
|
||||||
@@ -73,6 +57,10 @@ Write-Host "`n$dash Install mingw32 packages"
|
|||||||
$pre = "mingw-w64-i686-"
|
$pre = "mingw-w64-i686-"
|
||||||
pacman.exe -S --noconfirm --needed --noprogressbar $tools32.replace('___', $pre).split(' ')
|
pacman.exe -S --noconfirm --needed --noprogressbar $tools32.replace('___', $pre).split(' ')
|
||||||
|
|
||||||
|
# install openssh
|
||||||
|
Write-Host "`n$dash Install openssh package"
|
||||||
|
pacman.exe -S --noconfirm --needed --noprogressbar openssh
|
||||||
|
|
||||||
# clean all packages to decrease image size
|
# clean all packages to decrease image size
|
||||||
Write-Host "`n$dash Clean packages"
|
Write-Host "`n$dash Clean packages"
|
||||||
pacman.exe -Scc --noconfirm
|
pacman.exe -Scc --noconfirm
|
||||||
@@ -88,4 +76,23 @@ pacman.exe -Q | grep -v ^mingw-w64-
|
|||||||
|
|
||||||
Write-Host "`nMSYS2 installation completed"
|
Write-Host "`nMSYS2 installation completed"
|
||||||
|
|
||||||
|
# Environment
|
||||||
|
# add C:\msys64\mingw64\bin and C:\msys64\usr\bin to PATH
|
||||||
|
# C:\msys64\mingw64\bin add after C:\Windows\System32 to not replace built-in tar.exe
|
||||||
|
$regEnvKey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\'
|
||||||
|
$pathValue = Get-ItemPropertyValue -Path $regEnvKey -Name 'Path'
|
||||||
|
$pathValue += ";C:\msys64\mingw64\bin;C:\msys64\usr\bin"
|
||||||
|
Set-ItemProperty -Path $regEnvKey -Name 'Path' -Value $pathValue
|
||||||
|
|
||||||
|
# Add well-known SSH host keys to ssh_known_hosts to Msys2
|
||||||
|
ssh-keyscan -t rsa github.com >> "C:\msys64\etc\ssh\ssh_known_hosts"
|
||||||
|
ssh-keyscan -t rsa ssh.dev.azure.com >> "C:\msys64\etc\ssh\ssh_known_hosts"
|
||||||
|
|
||||||
|
# Add well-known SSH host keys to ssh_known_hosts to Git
|
||||||
|
if (Test-Path "C:\Program Files\Git\etc\ssh")
|
||||||
|
{
|
||||||
|
ssh-keyscan -t rsa github.com >> "C:\Program Files\Git\etc\ssh\ssh_known_hosts"
|
||||||
|
ssh-keyscan -t rsa ssh.dev.azure.com >> "C:\Program Files\Git\etc\ssh\ssh_known_hosts"
|
||||||
|
}
|
||||||
|
|
||||||
Invoke-PesterTests -TestFile "MSYS2"
|
Invoke-PesterTests -TestFile "MSYS2"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
## Desc: Install SQL PowerShell tool
|
## Desc: Install SQL PowerShell tool
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
$BaseUrl = "https://download.microsoft.com/download/8/7/2/872BCECA-C849-4B40-8EBE-21D48CDF1456/ENU/x64"
|
$BaseUrl = "https://download.microsoft.com/download/B/1/7/B1783FE9-717B-4F78-A39A-A2E27E3D679D/ENU/x64"
|
||||||
|
|
||||||
# install required MSIs
|
# install required MSIs
|
||||||
$SQLSysClrTypesName = "SQLSysClrTypes.msi"
|
$SQLSysClrTypesName = "SQLSysClrTypes.msi"
|
||||||
|
|||||||
@@ -271,6 +271,13 @@ function Get-PacmanVersion {
|
|||||||
return "- Pacman $pacmanVersion"
|
return "- Pacman $pacmanVersion"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Get-ShellTarget {
|
||||||
|
$shells = Get-ChildItem C:\shells -File | Select-Object @{n="Name";e={
|
||||||
|
$name = $_.Name
|
||||||
|
if ($name -eq 'bash.exe') {"$name (Default)"} else {$name}}},@{n="Target";e={@($_.Target)[0]}} | Sort-Object Name
|
||||||
|
$shells | New-MDTable -Columns ([ordered]@{Name = "left"; Target = "left";})
|
||||||
|
}
|
||||||
|
|
||||||
function Get-YAMLLintVersion {
|
function Get-YAMLLintVersion {
|
||||||
yamllint --version
|
yamllint --version
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,14 +143,22 @@ $markdown += New-MDList -Style Unordered -Lines @(
|
|||||||
(Get-SeleniumWebDriverVersion -Driver "iexplorer")
|
(Get-SeleniumWebDriverVersion -Driver "iexplorer")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
$markdown += New-MDHeader "Shells" -Level 3
|
||||||
|
$markdown += Get-ShellTarget
|
||||||
|
$markdown += New-MDNewLine
|
||||||
|
|
||||||
$markdown += New-MDHeader "MSYS2" -Level 3
|
$markdown += New-MDHeader "MSYS2" -Level 3
|
||||||
$markdown += Get-PacmanVersion
|
$markdown += Get-PacmanVersion
|
||||||
$markdown += New-MDNewLine
|
$markdown += New-MDNewLine
|
||||||
|
$markdown += New-MDHeader "Notes:" -Level 5
|
||||||
$markdown += @'
|
$markdown += @'
|
||||||
```
|
```
|
||||||
Location: C:\msys64
|
Location: C:\msys64
|
||||||
|
|
||||||
Note: MSYS2 is pre-installed on image but not added to PATH.
|
1. MSYS2 is pre-installed on image
|
||||||
|
2. C:\msys64\mingw64\bin is added to PATH and has lower precedence than C:\Windows\System32
|
||||||
|
3. C:\msys64\usr\bin is added to PATH and has lower precedence than C:\Windows\System32
|
||||||
|
4. Default bash.exe shell is set to the C:\msys64\usr\bin\bash.exe
|
||||||
```
|
```
|
||||||
'@
|
'@
|
||||||
$markdown += New-MDNewLine
|
$markdown += New-MDNewLine
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Describe "Git" {
|
Describe "Git" {
|
||||||
$gitTools = 'bash', 'awk', 'git', 'git-lfs'
|
$gitTools = 'git', 'git-lfs'
|
||||||
$gitTestCases = $gitTools | ForEach-Object {
|
$gitTestCases = $gitTools | ForEach-Object {
|
||||||
@{
|
@{
|
||||||
toolName = $_
|
toolName = $_
|
||||||
|
|||||||
50
images/win/scripts/Tests/Shell.Tests.ps1
Normal file
50
images/win/scripts/Tests/Shell.Tests.ps1
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
Describe "Shell" {
|
||||||
|
$shellTestCases = @(
|
||||||
|
@{Name = "C:\shells\bash.exe"; Target = "C:\msys64\usr\bin\bash.exe"},
|
||||||
|
@{Name = "C:\shells\sh.exe"; Target = "C:\msys64\usr\bin\sh.exe"},
|
||||||
|
@{Name = "C:\shells\gitbash.exe"; Target = "$env:ProgramFiles\Git\bin\bash.exe"},
|
||||||
|
@{Name = "C:\shells\msysbash.exe"; Target = "C:\msys64\usr\bin\bash.exe"}
|
||||||
|
)
|
||||||
|
|
||||||
|
$pathTestCases = @(
|
||||||
|
@{Path = "C:\shells"},
|
||||||
|
@{Path = "C:\msys64\mingw64\bin"},
|
||||||
|
@{Path = "C:\msys64\usr\bin"}
|
||||||
|
)
|
||||||
|
|
||||||
|
$IsWin16 = Test-IsWin16
|
||||||
|
|
||||||
|
It "Default bash.exe from MSYS2" {
|
||||||
|
(Get-Command bash).Path | Should -BeExactly "C:\shells\bash.exe"
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Default sh.exe from MSYS2" {
|
||||||
|
(Get-Command sh).Path | Should -BeExactly "C:\shells\sh.exe"
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Folder C:\shells exists" {
|
||||||
|
"C:\shells" | Should -Exist
|
||||||
|
}
|
||||||
|
|
||||||
|
It "C:\Windows\System32 before C:\msys64\mingw64\bin and C:\msys64\usr\bin" {
|
||||||
|
$path = $env:Path.Split(";").ToLower()
|
||||||
|
$indexOfSystem32 = $path.IndexOf("c:\windows\system32")
|
||||||
|
|
||||||
|
$path.IndexOf("c:\msys64\mingw64\bin") | Should -BeGreaterThan $indexOfSystem32
|
||||||
|
$path.IndexOf("c:\msys64\usr\bin") | Should -BeGreaterThan $indexOfSystem32
|
||||||
|
}
|
||||||
|
|
||||||
|
It "C:\shells\winbash.exe target to $env:SystemRoot\System32\bash.exe" -Skip:$IsWin16 {
|
||||||
|
$Name = "C:\shells\winbash.exe"
|
||||||
|
$Target = "$env:SystemRoot\System32\bash.exe"
|
||||||
|
(Get-Item $Name).Target | Should -BeExactly $Target
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<Name> target to <Target>" -TestCases $shellTestCases {
|
||||||
|
(Get-Item $Name).Target | Should -BeExactly $Target
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<Path> is in PATH" -TestCases $pathTestCases {
|
||||||
|
$env:Path.Split(";") | Should -Contain $Path
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -333,7 +333,8 @@
|
|||||||
"type": "powershell",
|
"type": "powershell",
|
||||||
"scripts": [
|
"scripts": [
|
||||||
"{{ template_dir }}/scripts/Installers/Install-WindowsUpdates.ps1",
|
"{{ template_dir }}/scripts/Installers/Install-WindowsUpdates.ps1",
|
||||||
"{{ template_dir }}/scripts/Installers/Configure-DynamicPort.ps1"
|
"{{ template_dir }}/scripts/Installers/Configure-DynamicPort.ps1",
|
||||||
|
"{{ template_dir }}/scripts/Installers/Configure-Shell.ps1"
|
||||||
],
|
],
|
||||||
"elevated_user": "{{user `install_user`}}",
|
"elevated_user": "{{user `install_user`}}",
|
||||||
"elevated_password": "{{user `install_password`}}"
|
"elevated_password": "{{user `install_password`}}"
|
||||||
|
|||||||
@@ -331,7 +331,8 @@
|
|||||||
"type": "powershell",
|
"type": "powershell",
|
||||||
"scripts": [
|
"scripts": [
|
||||||
"{{ template_dir }}/scripts/Installers/Install-WindowsUpdates.ps1",
|
"{{ template_dir }}/scripts/Installers/Install-WindowsUpdates.ps1",
|
||||||
"{{ template_dir }}/scripts/Installers/Configure-DynamicPort.ps1"
|
"{{ template_dir }}/scripts/Installers/Configure-DynamicPort.ps1",
|
||||||
|
"{{ template_dir }}/scripts/Installers/Configure-Shell.ps1"
|
||||||
],
|
],
|
||||||
"elevated_user": "{{user `install_user`}}",
|
"elevated_user": "{{user `install_user`}}",
|
||||||
"elevated_password": "{{user `install_password`}}"
|
"elevated_password": "{{user `install_password`}}"
|
||||||
|
|||||||
Reference in New Issue
Block a user