diff --git a/images/linux/scripts/installers/1604/dotnetcore-sdk.sh b/images/linux/scripts/installers/1604/dotnetcore-sdk.sh index e772d924..9baa83e9 100644 --- a/images/linux/scripts/installers/1604/dotnetcore-sdk.sh +++ b/images/linux/scripts/installers/1604/dotnetcore-sdk.sh @@ -34,11 +34,6 @@ for latest_package in ${LATEST_DOTNET_PACKAGES[@]}; do echo "Determing if .NET Core ($latest_package) is installed" if ! IsInstalled $latest_package; then echo "Could not find .NET Core ($latest_package), installing..." - curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg - mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg - sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-bionic-prod bionic main" > /etc/apt/sources.list.d/dotnetdev.list' - apt-get install apt-transport-https - apt-get update apt-get install $latest_package -y else echo ".NET Core ($latest_package) is already installed" diff --git a/images/linux/scripts/installers/1604/kubernetes-tools.sh b/images/linux/scripts/installers/1604/kubernetes-tools.sh index 934fe92c..448ecd05 100644 --- a/images/linux/scripts/installers/1604/kubernetes-tools.sh +++ b/images/linux/scripts/installers/1604/kubernetes-tools.sh @@ -17,7 +17,7 @@ apt-get update apt-get install -y kubectl # Install Helm -curl -L https://git.io/get_helm.sh | bash +curl -L https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash # Run tests to determine that the software installed as expected echo "Testing to make sure that script performed as expected, and basic scenarios work" diff --git a/images/linux/scripts/installers/1804/dotnetcore-sdk.sh b/images/linux/scripts/installers/1804/dotnetcore-sdk.sh index e772d924..3b80d2cb 100644 --- a/images/linux/scripts/installers/1804/dotnetcore-sdk.sh +++ b/images/linux/scripts/installers/1804/dotnetcore-sdk.sh @@ -30,6 +30,9 @@ mksamples() set -e +# Disable telemetry +export DOTNET_CLI_TELEMETRY_OPTOUT=1 + for latest_package in ${LATEST_DOTNET_PACKAGES[@]}; do echo "Determing if .NET Core ($latest_package) is installed" if ! IsInstalled $latest_package; then diff --git a/images/linux/scripts/installers/1804/kubernetes-tools.sh b/images/linux/scripts/installers/1804/kubernetes-tools.sh index b0a6f43f..ba6f0aa0 100644 --- a/images/linux/scripts/installers/1804/kubernetes-tools.sh +++ b/images/linux/scripts/installers/1804/kubernetes-tools.sh @@ -19,7 +19,7 @@ apt-get update apt-get install -y kubectl # Install Helm -curl -L https://git.io/get_helm.sh | bash +curl -L https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash # Run tests to determine that the software installed as expected echo "Testing to make sure that script performed as expected, and basic scenarios work" diff --git a/images/linux/scripts/installers/clang.sh b/images/linux/scripts/installers/clang.sh index b8e5fa40..0a7f2252 100644 --- a/images/linux/scripts/installers/clang.sh +++ b/images/linux/scripts/installers/clang.sh @@ -1,31 +1,61 @@ #!/bin/bash ################################################################################ -## File: example.sh -## Desc: This is an example script that can be copied to add a new software -## installer to the image +## File: clang.sh +## Desc: Installs Clang compiler (versions: 6, 8 and 9) ################################################################################ # Source the helpers for use with the script source $HELPER_SCRIPTS/document.sh source $HELPER_SCRIPTS/apt.sh +function InstallClang { + version=$1 + + echo "Installing clang-$version..." + # Clang 6.0 is not supported by automatic installation script (`llvm.sh`) + # Thus we have to install it explicitly + if [[ $version == 6* ]]; then + apt-get install -y "clang-$version" "lldb-$version" "lld-$version" + else + ./llvm.sh $version + fi + + # 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 clang-$version clang++-$version; do + if ! command -v $cmd; then + echo "$cmd was not installed" + exit 1 + fi + done + + # Document what was added to the image + echo "Documenting clang-$version..." + DocumentInstalledItem "Clang $version ($(clang-$version --version | head -n 1 | cut -d ' ' -f 3 | cut -d '-' -f 1))" +} + +# Install Clang compiler wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - apt-add-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-6.0 main" -apt-get update -apt-get install -y clang-6.0 lldb-6.0 lld-6.0 +apt-get update -y -update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-6.0 100 -update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 100 +# Download script for automatic installation +wget https://apt.llvm.org/llvm.sh +chmod +x llvm.sh -# 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 clang clang++ clang-6.0 clang++-6.0; do - if ! command -v $cmd; then - echo "$cmd was not installed" - exit 1 - fi +versions=( + "6.0" + "8" + "9" +) + +for version in ${versions[*]} +do + InstallClang $version done -# Document what was added to the image -echo "Lastly, documenting what we added to the metadata file" -DocumentInstalledItem "Clang 6.0 ($(clang-6.0 --version | head -n 1 | sed 's/~/\\~/g'))" +rm llvm.sh + +# Make Clang 9 default +update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-9 100 +update-alternatives --install /usr/bin/clang clang /usr/bin/clang-9 100 diff --git a/images/linux/scripts/installers/dpkg-config.sh b/images/linux/scripts/installers/dpkg-config.sh new file mode 100644 index 00000000..e92e4270 --- /dev/null +++ b/images/linux/scripts/installers/dpkg-config.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# This is the anti-frontend. It never interacts with you at all, +# and makes the default answers be used for all questions. It +# might mail error messages to root, but that's it; otherwise it +# is completely silent and unobtrusive, a perfect frontend for +# automatic installs. If you are using this front-end, and require +# non-default answers to questions, you will need to preseed the +# debconf database +echo 'DEBIAN_FRONTEND=noninteractive' | tee -a /etc/environment + +# dpkg can be instructed not to ask for confirmation +# when replacing a configuration file (with the --force-confdef --force-confold options) +cat <> /etc/apt/apt.conf.d/10dpkg-options +Dpkg::Options { + "--force-confdef"; + "--force-confold"; +} +EOF \ No newline at end of file diff --git a/images/linux/scripts/installers/gcc.sh b/images/linux/scripts/installers/gcc.sh index 328d5c76..86575568 100644 --- a/images/linux/scripts/installers/gcc.sh +++ b/images/linux/scripts/installers/gcc.sh @@ -7,19 +7,35 @@ # Source the helpers for use with the script source $HELPER_SCRIPTS/document.sh +function InstallGcc { + version=$1 + + echo "Installing $version..." + apt-get install $version -y + + # 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 ! command -v $version; then + echo "$version was not installed" + exit 1 + fi + + # Document what was added to the image + echo "Documenting $version..." + DocumentInstalledItem "GNU C++ $($version --version | head -n 1 | cut -d ' ' -f 4)" +} + # Install GNU C++ compiler add-apt-repository ppa:ubuntu-toolchain-r/test -y apt-get update -y -apt-get install g++-7 -y +versions=( + "g++-7" + "g++-8" + "g++-9" +) -# 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 ! command -v g++-7; then - echo "GNU C++ was not installed" - exit 1 -fi - -# Document what was added to the image -echo "Lastly, documenting what we added to the metadata file" -DocumentInstalledItem "GNU C++ $(g++-7 --version | head -n 1 | cut -d ' ' -f 4)" +for version in ${versions[*]} +do + InstallGcc $version +done diff --git a/images/linux/scripts/installers/gfortran.sh b/images/linux/scripts/installers/gfortran.sh new file mode 100644 index 00000000..1e392839 --- /dev/null +++ b/images/linux/scripts/installers/gfortran.sh @@ -0,0 +1,40 @@ +#!/bin/bash +################################################################################ +## File: gfortran.sh +## Desc: Installs GNU Fortran +################################################################################ + +# Source the helpers for use with the script +source $HELPER_SCRIPTS/document.sh + +function InstallFortran { + version=$1 + + echo "Installing $version..." + apt-get install $version -y + + # 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 ! command -v $version; then + echo "$version was not installed" + exit 1 + fi + + # Document what was added to the image + echo "Documenting $version..." + DocumentInstalledItem "GNU Fortran $($version --version | head -n 1 | cut -d ' ' -f 5)" +} + +# Install GNU Fortran compiler +add-apt-repository ppa:ubuntu-toolchain-r/test -y +apt-get update -y + +versions=( + "gfortran-8" + "gfortran-9" +) + +for version in ${versions[*]} +do + InstallFortran $version +done diff --git a/images/linux/scripts/installers/google-chrome.sh b/images/linux/scripts/installers/google-chrome.sh index 20396e2a..5d19a0f4 100644 --- a/images/linux/scripts/installers/google-chrome.sh +++ b/images/linux/scripts/installers/google-chrome.sh @@ -39,11 +39,14 @@ wget "https://chromedriver.storage.googleapis.com/$LATEST_CHROMEDRIVER_VERSION/c unzip chromedriver_linux64.zip rm chromedriver_linux64.zip -CHROMEDRIVER_BIN="/usr/bin/chromedriver" +CHROMEDRIVER_DIR="/usr/local/share/chrome_driver" +CHROMEDRIVER_BIN="$CHROMEDRIVER_DIR/chromedriver" + +mkdir -p $CHROMEDRIVER_DIR mv "chromedriver" $CHROMEDRIVER_BIN -chown root:root $CHROMEDRIVER_BIN chmod +x $CHROMEDRIVER_BIN -echo "CHROMEWEBDRIVER=$CHROMEDRIVER_BIN" | tee -a /etc/environment +ln -s "$CHROMEDRIVER_BIN" /usr/bin/ +echo "CHROMEWEBDRIVER=$CHROMEDRIVER_DIR" | tee -a /etc/environment # Run tests to determine that the chromedriver installed as expected echo "Testing to make sure that script performed as expected, and basic scenarios work" diff --git a/images/linux/scripts/installers/nodejs.sh b/images/linux/scripts/installers/nodejs.sh index c4d6296e..5b4777a6 100644 --- a/images/linux/scripts/installers/nodejs.sh +++ b/images/linux/scripts/installers/nodejs.sh @@ -8,7 +8,7 @@ source $HELPER_SCRIPTS/document.sh # Install LTS Node.js and related build tools -curl -sL https://git.io/n-install | bash -s -- -ny - +curl -sL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s -- -ny - ~/n/bin/n lts npm install -g grunt gulp n parcel-bundler typescript npm install -g --save-dev webpack webpack-cli diff --git a/images/linux/ubuntu1604.json b/images/linux/ubuntu1604.json index 30f25d9a..6cef1b7f 100644 --- a/images/linux/ubuntu1604.json +++ b/images/linux/ubuntu1604.json @@ -133,6 +133,7 @@ "{{template_dir}}/scripts/installers/erlang.sh", "{{template_dir}}/scripts/installers/firefox.sh", "{{template_dir}}/scripts/installers/gcc.sh", + "{{template_dir}}/scripts/installers/gfortran.sh", "{{template_dir}}/scripts/installers/git.sh", "{{template_dir}}/scripts/installers/1604/go.sh", "{{template_dir}}/scripts/installers/google-chrome.sh", @@ -162,7 +163,9 @@ "{{template_dir}}/scripts/installers/subversion.sh", "{{template_dir}}/scripts/installers/terraform.sh", "{{template_dir}}/scripts/installers/vcpkg.sh", - "{{template_dir}}/scripts/installers/zeit-now.sh" + "{{template_dir}}/scripts/installers/zeit-now.sh", + "{{template_dir}}/scripts/installers/dpkg-config.sh" + ], "environment_vars": [ "METADATA_FILE={{user `metadata_file`}}", diff --git a/images/linux/ubuntu1804.json b/images/linux/ubuntu1804.json index 2b128c0c..fde3d240 100644 --- a/images/linux/ubuntu1804.json +++ b/images/linux/ubuntu1804.json @@ -136,6 +136,7 @@ "{{template_dir}}/scripts/installers/erlang.sh", "{{template_dir}}/scripts/installers/firefox.sh", "{{template_dir}}/scripts/installers/gcc.sh", + "{{template_dir}}/scripts/installers/gfortran.sh", "{{template_dir}}/scripts/installers/git.sh", "{{template_dir}}/scripts/installers/1804/go.sh", "{{template_dir}}/scripts/installers/google-chrome.sh", @@ -165,7 +166,8 @@ "{{template_dir}}/scripts/installers/subversion.sh", "{{template_dir}}/scripts/installers/terraform.sh", "{{template_dir}}/scripts/installers/vcpkg.sh", - "{{template_dir}}/scripts/installers/zeit-now.sh" + "{{template_dir}}/scripts/installers/zeit-now.sh", + "{{template_dir}}/scripts/installers/dpkg-config.sh" ], "environment_vars": [ "METADATA_FILE={{user `metadata_file`}}", diff --git a/images/macos/macos-10.15-Readme.md b/images/macos/macos-10.15-Readme.md index 2a3e9b49..83d6c3a2 100644 --- a/images/macos/macos-10.15-Readme.md +++ b/images/macos/macos-10.15-Readme.md @@ -1,34 +1,34 @@ --- title: GitHub Hosted Github Mojave 10.15 VM Image Updates description: Software used on build machines -date: Week 4 +date: Week 6 --- -#### ⚠️ We are going to change the default Xcode to 11.3.1 next week. -#### Xcode 11.2.1 set by default +#### Xcode 11.3.1 set by default ## Operating System -- OS X 10.15.2 (19C57) **Catalina** +- OS X 10.15.3 (19D76) **Catalina** ## Installed Software ### Language and Runtime - Java 1.7: (Zulu 7.36.0.5-CA-macosx) (build 1.7.0_252-b10) -- Java 1.8: (Zulu 8.44.0.9-CA-macosx) (build 1.8.0_242-b20) (default) +- Java 1.8: (Zulu 8.44.0.11-CA-macosx) (build 1.8.0_242-b20) (default) - Java 11: Zulu11.37+17-CA (build 11.0.6+10-LTS) - Java 12: Zulu12.3+11-CA (build 12.0.2+3) - Java 13: Zulu13.29+9-CA (build 13.0.2+6-MTS) +- Rust 1.41.0 - Node.js v12.14.1 - NVM 0.33.11 -- NVM - Cached node versions: v6.17.1 v8.17.0 v10.18.1 v12.14.1 v13.6.0 -- PowerShell 6.2.3 +- NVM - Cached node versions: v6.17.1 v8.17.0 v10.18.1 v12.14.1 v13.7.0 +- PowerShell 6.2.4 - Python 2.7.17 - Python 3.7.6 - Ruby 2.6.5p114 -- Rust 1.40.0 - .NET SDK 2.0.0 3.0.100 3.0.101 3.0.102 3.1.100 3.1.101 -- Go 1.13.6 +- Go 1.13.7 ### Package Management +- Rustup 1.21.1 - Bundler version 2.1.4 - Carthage 0.34.0 - CocoaPods 1.8.4 @@ -38,34 +38,35 @@ date: Week 4 - NuGet 5.3.1.6268 - Pip 19.3.1 (python 2.7) - Pip 19.3.1 (python 3.7) -- Rustup 1.21.1 - Miniconda 4.7.12 - RubyGems 3.1.2 ### Project Management - Apache Maven 3.6.3 -- Gradle 6.1 +- Gradle 6.1.1 ### Utilities - Curl 7.68.0 - Git: 2.25.0 -- Git LFS: 2.9.2 +- Git LFS: 2.10.0 - GNU Wget 1.20.3 - Subversion (SVN) 1.13.0 -- GNU parallel 20191222 +- GNU parallel 20200122 - OpenSSL 1.0.2t 10 Sep 2019 - jq 1.6 - gpg (GnuPG) 2.2.19 ### Tools -- Fastlane 2.140.0 -- Cmake 3.16.2 +- Fastlane 2.141.0 +- Cmake 3.16.3 - App Center CLI 2.3.3 - Azure CLI 2.0.80 ### Browsers - Google Chrome 79.0.3945.130 - ChromeDriver 79.0.3945.36 +- Microsoft Edge 79.0.309.71 +- MSEdgeDriver 79.0.309.71 ### Toolcache #### Ruby @@ -82,12 +83,12 @@ date: Week 4 - 3.8.1 #### PyPy -- 2.7.13 +- 2.7.17 - 3.6.9 ### Xamarin #### Visual Studio for Mac -- 8.4.1.4 +- 8.4.3.12 #### Mono - 6.6.0.155 @@ -115,7 +116,7 @@ date: Week 4 ### Xcode | Version | Build | Path | | ------------------------------ | ------------------------------ | ------------------------------ | -| 11.3.1 | 11C505 | /Applications/Xcode_11.3.1.app | +| 11.3.1 (default) | 11C505 | /Applications/Xcode_11.3.1.app | | 11.3 | 11C29 | /Applications/Xcode_11.3.app | | 11.2.1 | 11B500 | /Applications/Xcode_11.2.1.app | | 11.2 | 11B52 | /Applications/Xcode_11.2.app | @@ -209,6 +210,7 @@ date: Week 4 | build-tools-29.0.0 | Android SDK Build-Tools, Revision 29.0.0 | | build-tools-29.0.1 | Android SDK Build-Tools, Revision 29.0.1 | | build-tools-29.0.2 | Android SDK Build-Tools, Revision 29.0.2 | +| build-tools-29.0.3 | Android SDK Build-Tools, Revision 29.0.3 | #### Android Utils | Package Name | Version | diff --git a/images/win/Windows2019-Readme.md b/images/win/Windows2019-Readme.md index 47089227..28c15342 100644 --- a/images/win/Windows2019-Readme.md +++ b/images/win/Windows2019-Readme.md @@ -125,7 +125,8 @@ _Environment:_ ## .NET 4.8 -_Version:_ 4.8.03761 +_Version:_ 4.8.03761 +_Path:_ C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools ## Windows Driver Kit diff --git a/images/win/scripts/Installers/Install-NodeLts.ps1 b/images/win/scripts/Installers/Install-NodeLts.ps1 index 2490cdfe..e98e7f39 100644 --- a/images/win/scripts/Installers/Install-NodeLts.ps1 +++ b/images/win/scripts/Installers/Install-NodeLts.ps1 @@ -31,3 +31,4 @@ npm install -g gulp-cli npm install -g parcel-bundler npm install -g --save-dev webpack webpack-cli npm install -g yarn +npm install -g lerna diff --git a/images/win/scripts/Installers/Validate-NET48.ps1 b/images/win/scripts/Installers/Validate-NET48.ps1 index d48565bf..a0b43c1c 100644 --- a/images/win/scripts/Installers/Validate-NET48.ps1 +++ b/images/win/scripts/Installers/Validate-NET48.ps1 @@ -22,6 +22,7 @@ $SoftwareName = ".NET 4.8" $Description = @" _Version:_ $version +_Path:_ ${Env:ProgramFiles(x86)}\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools "@ Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description diff --git a/images/win/scripts/Installers/Validate-NodeLts.ps1 b/images/win/scripts/Installers/Validate-NodeLts.ps1 index f2c86faf..7d42a040 100644 --- a/images/win/scripts/Installers/Validate-NodeLts.ps1 +++ b/images/win/scripts/Installers/Validate-NodeLts.ps1 @@ -26,6 +26,16 @@ else exit 1 } +if(Get-Command -Name 'lerna') +{ + Write-Host "lerna $(lerna --version) on path" +} +else +{ + Write-Host "lerna is not on path" + exit 1 +} + if( $(node --version) -match 'v(?.*)' )