diff --git a/images.CI/azure-pipelines/image-generation.yml b/images.CI/azure-pipelines/image-generation.yml new file mode 100644 index 000000000..332f34add --- /dev/null +++ b/images.CI/azure-pipelines/image-generation.yml @@ -0,0 +1,69 @@ +# Ideally we would use GitHub Actions for this, but since we use self-hosted machines to run image builds +# we need the following features to use GitHub Actions for Images CI: +# - https://github.community/t5/GitHub-Actions/Make-secrets-available-to-builds-of-forks/m-p/30678#M508 +# - https://github.community/t5/GitHub-Actions/GitHub-Actions-Manual-Trigger-Approvals/td-p/31504 +# - https://github.community/t5/GitHub-Actions/Protecting-github-workflows/td-p/30290 + +jobs: +- job: + pool: ci-agent-pool + timeoutInMinutes: 600 + variables: + - group: Image Generation Variables + + steps: + - task: PowerShell@2 + displayName: 'Download custom repository' + condition: and(ne(variables['CUSTOM_REPOSITORY_URL'], ''), ne(variables['CUSTOM_REPOSITORY_BRANCH'], '')) + inputs: + targetType: 'inline' + script: | + Write-Host "Clean up default repository" + Remove-Item -path './*' -Recurse -Force + Write-Host "Download $(CUSTOM_REPOSITORY_BRANCH) branch from $(CUSTOM_REPOSITORY_URL)" + $env:GIT_REDIRECT_STDERR = '2>&1' + git clone $(CUSTOM_REPOSITORY_URL) . -b $(CUSTOM_REPOSITORY_BRANCH) --single-branch --depth 1 + + - task: PowerShell@2 + displayName: 'Build VM' + inputs: + targetType: filePath + filePath: ./images.CI/build-image.ps1 + arguments: -ResourcesNamePrefix $(Build.BuildId) ` + -ClientId $(CLIENT_ID) ` + -ClientSecret $(CLIENT_SECRET) ` + -Image ${{ parameters.image_type }} ` + -ResourceGroup $(AZURE_RESOURCE_GROUP) ` + -StorageAccount $(AZURE_STORAGE_ACCOUNT) ` + -SubscriptionId $(AZURE_SUBSCRIPTION) ` + -TenantId $(AZURE_TENANT) ` + -Location $(AZURE_LOCATION) ` + -VirtualNetworkName $(BUILD_AGENT_VNET_NAME) ` + -VirtualNetworkRG $(BUILD_AGENT_VNET_RESOURCE_GROUP) ` + -VirtualNetworkSubnet $(BUILD_AGENT_SUBNET_NAME) ` + -GitHubFeedToken $(GITHUB_TOKEN) + + - task: PowerShell@2 + displayName: 'Create release for VM deployment' + inputs: + targetType: filePath + filePath: ./images.CI/create-release.ps1 + arguments: -BuildId $(Build.BuildId) ` + -Organization $(RELEASE_TARGET_ORGANIZATION) ` + -DefinitionId $(RELEASE_TARGET_DEFINITION_ID) ` + -Project $(RELEASE_TARGET_PROJECT) ` + -ImageName ${{ parameters.image_type }} ` + -AccessToken $(RELEASE_TARGET_TOKEN) + + - task: PowerShell@2 + displayName: 'Clean up resources' + condition: always() + inputs: + targetType: filePath + filePath: ./images.CI/cleanup.ps1 + arguments: -ResourcesNamePrefix $(Build.BuildId) ` + -ClientId $(CLIENT_ID) ` + -ClientSecret $(CLIENT_SECRET) ` + -Image ${{ parameters.image_type }} ` + -SubscriptionId $(AZURE_SUBSCRIPTION) ` + -TenantId $(AZURE_TENANT) \ No newline at end of file diff --git a/images.CI/azure-pipelines/ubuntu1604.yml b/images.CI/azure-pipelines/ubuntu1604.yml new file mode 100644 index 000000000..8f6dcef22 --- /dev/null +++ b/images.CI/azure-pipelines/ubuntu1604.yml @@ -0,0 +1,19 @@ +schedules: +- cron: "0 0 * * *" + displayName: Daily + branches: + include: + - master + always: true + +trigger: none +pr: + autoCancel: true + branches: + include: + - master + +jobs: +- template: image-generation.yml + parameters: + image_type: ubuntu1604 \ No newline at end of file diff --git a/images.CI/azure-pipelines/ubuntu1804.yml b/images.CI/azure-pipelines/ubuntu1804.yml new file mode 100644 index 000000000..998ba42e6 --- /dev/null +++ b/images.CI/azure-pipelines/ubuntu1804.yml @@ -0,0 +1,19 @@ +schedules: +- cron: "0 0 * * *" + displayName: Daily + branches: + include: + - master + always: true + +trigger: none +pr: + autoCancel: true + branches: + include: + - master + +jobs: +- template: image-generation.yml + parameters: + image_type: ubuntu1804 \ No newline at end of file diff --git a/images.CI/azure-pipelines/windows2016.yml b/images.CI/azure-pipelines/windows2016.yml new file mode 100644 index 000000000..667b30bd7 --- /dev/null +++ b/images.CI/azure-pipelines/windows2016.yml @@ -0,0 +1,19 @@ +schedules: +- cron: "0 0 * * *" + displayName: Daily + branches: + include: + - master + always: true + +trigger: none +pr: + autoCancel: true + branches: + include: + - master + +jobs: +- template: image-generation.yml + parameters: + image_type: Windows2016-Azure \ No newline at end of file diff --git a/images.CI/azure-pipelines/windows2019.yml b/images.CI/azure-pipelines/windows2019.yml new file mode 100644 index 000000000..508fa12b3 --- /dev/null +++ b/images.CI/azure-pipelines/windows2019.yml @@ -0,0 +1,19 @@ +schedules: +- cron: "0 0 * * *" + displayName: Daily + branches: + include: + - master + always: true + +trigger: none +pr: + autoCancel: true + branches: + include: + - master + +jobs: +- template: image-generation.yml + parameters: + image_type: Windows2019-Azure \ No newline at end of file diff --git a/images.CI/build-image.ps1 b/images.CI/build-image.ps1 new file mode 100644 index 000000000..54748e417 --- /dev/null +++ b/images.CI/build-image.ps1 @@ -0,0 +1,60 @@ +param( + [String] [Parameter (Mandatory=$true)] $Image, + [String] [Parameter (Mandatory=$true)] $ClientId, + [String] [Parameter (Mandatory=$true)] $ClientSecret, + [String] [Parameter (Mandatory=$true)] $GitHubFeedToken, + [String] [Parameter (Mandatory=$true)] $ResourcesNamePrefix, + [String] [Parameter (Mandatory=$true)] $Location, + [String] [Parameter (Mandatory=$true)] $ResourceGroup, + [String] [Parameter (Mandatory=$true)] $StorageAccount, + [String] [Parameter (Mandatory=$true)] $SubscriptionId, + [String] [Parameter (Mandatory=$true)] $TenantId, + [String] [Parameter (Mandatory=$true)] $VirtualNetworkName, + [String] [Parameter (Mandatory=$true)] $VirtualNetworkRG, + [String] [Parameter (Mandatory=$true)] $VirtualNetworkSubnet +) + +$TemplatePath = (Get-ChildItem -Path "images" -Include "$Image.json" -Recurse -Depth 2).FullName +if (-not $TemplatePath) +{ + Write-Error "'-Image' parameter is not valid. You have to specify correct image type." + exit 1 +} + +$TempResourceGroupName = "${ResourcesNamePrefix}_${Image}" +$InstallPassword = [System.GUID]::NewGuid().ToString().ToUpper() + +packer validate -syntax-only $TemplatePath + +$SensitiveData = @( + 'OSType', + 'StorageAccountLocation', + 'OSDiskUri', + 'OSDiskUriReadOnlySas', + 'TemplateUri', + 'TemplateUriReadOnlySas', + ': ->' +) + +Write-Host "Build $Image VM" +packer build -var "capture_name_prefix=$ResourcesNamePrefix" ` + -var "client_id=$ClientId" ` + -var "client_secret=$ClientSecret" ` + -var "install_password=$InstallPassword" ` + -var "github_feed_token=$GitHubFeedToken" ` + -var "location=$Location" ` + -var "resource_group=$ResourceGroup" ` + -var "storage_account=$StorageAccount" ` + -var "subscription_id=$SubscriptionId" ` + -var "temp_resource_group_name=$TempResourceGroupName" ` + -var "tenant_id=$TenantId" ` + -var "virtual_network_name=$VirtualNetworkName" ` + -var "virtual_network_resource_group_name=$VirtualNetworkRG" ` + -var "virtual_network_subnet_name=$VirtualNetworkSubnet" ` + $TemplatePath ` + | Where-Object { + #Filter sensitive data from Packer logs + $currentString = $_ + $sensitiveString = $SensitiveData | Where-Object { $currentString -match $_ } + $sensitiveString -eq $null + } \ No newline at end of file diff --git a/images.CI/cleanup.ps1 b/images.CI/cleanup.ps1 new file mode 100644 index 000000000..00050d551 --- /dev/null +++ b/images.CI/cleanup.ps1 @@ -0,0 +1,21 @@ +param( + [String] [Parameter (Mandatory=$true)] $Image, + [String] [Parameter (Mandatory=$true)] $ResourcesNamePrefix, + [String] [Parameter (Mandatory=$true)] $ClientId, + [String] [Parameter (Mandatory=$true)] $ClientSecret, + [String] [Parameter (Mandatory=$true)] $SubscriptionId, + [String] [Parameter (Mandatory=$true)] $TenantId +) + +az login --service-principal --username $ClientId --password $ClientSecret --tenant $TenantId | Out-Null + +$TempResourceGroupName = "${ResourcesNamePrefix}_${Image}" + +$groupExist = az group exists --name $TempResourceGroupName --subscription $SubscriptionId | Out-Null +if ($groupExist -eq "true") { + Write-Host "Found a match, deleting temporary files" + az group delete --name $TempResourceGroupName --subscription $SubscriptionId --yes | Out-Null + Write-Host "Temporary group was deleted succesfully" -ForegroundColor Green +} else { + Write-Host "No temporary groups found" +} \ No newline at end of file diff --git a/images.CI/create-release.ps1 b/images.CI/create-release.ps1 new file mode 100644 index 000000000..72d0db4e1 --- /dev/null +++ b/images.CI/create-release.ps1 @@ -0,0 +1,31 @@ +param( + [UInt32] [Parameter (Mandatory)] $BuildId, + [String] [Parameter (Mandatory)] $Organization, + [String] [Parameter (Mandatory)] $Project, + [String] [Parameter (Mandatory)] $ImageName, + [String] [Parameter (Mandatory)] $DefinitionId, + [String] [Parameter (Mandatory)] $AccessToken +) + +$Body = @{ + definitionId = $DefinitionId + variables = @{ + ImageBuildId = @{ + value = $BuildId + } + ImageName = @{ + value = $ImageName + } + } + isDraft = "false" +} | ConvertTo-Json -Depth 3 + +$URL = "https://vsrm.dev.azure.com/$Organization/$Project/_apis/release/releases?api-version=5.1" +$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("'':${AccessToken}")) +$headers = @{ + Authorization = "Basic ${base64AuthInfo}" +} + +$NewRelease = Invoke-RestMethod $URL -Body $Body -Method "POST" -Headers $headers -ContentType "application/json" + +Write-Host "Created release: $($NewRelease._links.web.href)" \ No newline at end of file diff --git a/images/linux/Ubuntu1604-README.md b/images/linux/Ubuntu1604-README.md index c74c5cfb7..a00a4084a 100644 --- a/images/linux/Ubuntu1604-README.md +++ b/images/linux/Ubuntu1604-README.md @@ -1,11 +1,16 @@ # Ubuntu 16.04.6 LTS -The following software is installed on machines with the 20200217.1 update. +The following software is installed on machines with the 20200301.1 update. *** - 7-Zip 9.20 - Ansible (ansible 2.9.4) - AzCopy (azcopy 7.3.0-netcore) -- Azure CLI (azure-cli 2.0.81) +- Azure CLI (azure-cli 2.1.0) - Azure CLI (azure-devops 0.17.0) +- Bazel (Build label: 2.1.1 +Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar +Build time: Fri Feb 21 14:56:47 2020 (1582297007) +Build timestamp: 1582297007 +Build timestamp as int: 1582297007) - Basic CLI: - curl - dnsutils @@ -26,23 +31,24 @@ The following software is installed on machines with the 20200217.1 update. - sudo - telnet - time + - tzdata - unzip - upx - wget - zip - - tzdata -- AWS CLI (aws-cli/1.18.0 Python/2.7.12 Linux/4.15.0-1069-azure botocore/1.15.0) + - zstd +- AWS CLI (aws-cli/1.18.11 Python/2.7.12 Linux/4.15.0-1071-azure botocore/1.15.11) - build-essential - Clang 6.0 (6.0.1) - Clang 8 (8.0.1) - Clang 9 (9.0.1) - CMake (cmake version 3.16.2) - Docker Compose (docker-compose version 1.22.0, build f46880fe) -- Docker (Docker version 3.0.10+azure, build 99c5edceb48d64c1aa5d09b8c9c499d431d98bb9) -- Docker (Docker version 3.0.10+azure, build 99c5edceb48d64c1aa5d09b8c9c499d431d98bb9) +- Docker-Moby (Docker version 3.0.10+azure, build 99c5edceb48d64c1aa5d09b8c9c499d431d98bb9) - .NET Core SDK: - 3.1.101 - 3.1.100 + - 3.0.103 - 3.0.102 - 3.0.101 - 3.0.100 @@ -67,11 +73,13 @@ The following software is installed on machines with the 20200217.1 update. - 2.2.102 - 2.2.101 - 2.2.100 + - 2.1.804 - 2.1.803 - 2.1.802 - 2.1.801 - 2.1.701 - 2.1.700 + - 2.1.609 - 2.1.608 - 2.1.607 - 2.1.606 @@ -79,6 +87,7 @@ The following software is installed on machines with the 20200217.1 update. - 2.1.604 - 2.1.603 - 2.1.602 + - 2.1.512 - 2.1.511 - 2.1.510 - 2.1.509 @@ -97,23 +106,23 @@ The following software is installed on machines with the 20200217.1 update. - 2.1.301 - 2.1.300 - Erlang (Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.6.4) -- Firefox (Mozilla Firefox 72.0.2) +- Firefox (Mozilla Firefox 73.0.1) - Geckodriver (); Gecko Driver is available via GECKOWEBDRIVER environment variable - GNU C++ 7.4.0 - GNU C++ 8.3.0 - GNU C++ 9.2.1 - GNU Fortran 8.3.0 - GNU Fortran 9.2.1 -- Git (2.25.0) +- Git (2.25.1) - Git Large File Storage (LFS) (2.10.0) - Go 1.9 (go version go1.9.7 linux/amd64) - Go 1.10 (go version go1.10.8 linux/amd64) - Go 1.11 (go version go1.11.12 linux/amd64) - Go 1.12 (go version go1.12.7 linux/amd64) - Go 1.13 (go version go1.13 linux/amd64) -- Google Chrome (Google Chrome 80.0.3987.106 ) +- Google Chrome (Google Chrome 80.0.3987.122 ) - Chromedriver (ChromeDriver 80.0.3987.106 (f68069574609230cf9b635cd784cfb1bf81bb53a-refs/branch-heads/3987@{#882})); Chrome Driver is available via CHROMEWEBDRIVER environment variable -- Google Cloud SDK (280.0.0) +- Google Cloud SDK (282.0.0) - Haskell Cabal (cabal-install version 2.0.0.1 compiled using version 2.0.1.1 of the Cabal library ) - Haskell Cabal (cabal-install version 2.2.0.0 @@ -121,7 +130,7 @@ compiled using version 2.2.0.1 of the Cabal library ) - Haskell Cabal (cabal-install version 2.4.1.0 compiled using version 2.4.1.0 of the Cabal library ) - Haskell Cabal (cabal-install version 3.0.1.0 -compiled using version 3.0.1.0 of the Cabal library ) +compiled using version 3.0.2.0 of the Cabal library ) - GHC (The Glorious Glasgow Haskell Compilation System, version 8.0.2) - GHC (The Glorious Glasgow Haskell Compilation System, version 8.2.2) - GHC (The Glorious Glasgow Haskell Compilation System, version 8.4.4) @@ -132,43 +141,43 @@ compiled using version 3.0.1.0 of the Cabal library ) - GHC (The Glorious Glasgow Haskell Compilation System, version 8.8.1) - GHC (The Glorious Glasgow Haskell Compilation System, version 8.8.2) - Haskell Stack (Version 2.1.3, Git revision 636e3a759d51127df2b62f90772def126cdf6d1f (7735 commits) x86_64 hpack-0.31.2) -- Heroku (heroku/7.38.1 linux-x64 node-v12.13.0) -- HHVM (HipHop VM 4.44.0 (rel)) +- Heroku (heroku/7.38.2 linux-x64 node-v12.13.0) +- HHVM (HipHop VM 4.46.0 (rel)) - ImageMagick - Azul Zulu OpenJDK (7) (openjdk version "1.7.0_252") - Azul Zulu OpenJDK (8) (openjdk version "1.8.0_242") - Azul Zulu OpenJDK (11) (openjdk version "11.0.6" 2020-01-14 LTS) - Azul Zulu OpenJDK (12) (openjdk version "12.0.2" 2019-07-16) - Ant (Apache Ant(TM) version 1.9.6 compiled on July 20 2018) -- Gradle 6.2 +- Gradle 6.2.1 - Maven (Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)) - Kind (kind v0.7.0 go1.13.6 linux/amd64) - kubectl (Client Version: v1.17.3) - helm (Client: v2.16.3+g1ee0254) -- Leiningen (Leiningen 2.9.1 on Java 1.8.0_242 OpenJDK 64-Bit Server VM) +- Leiningen (Leiningen 2.9.2 on Java 1.8.0_242 OpenJDK 64-Bit Server VM) - Mercurial (Mercurial Distributed SCM (version 4.4.1)) - Miniconda (conda 4.7.12) - Mono (Mono JIT compiler version 6.8.0.105 (tarball Tue Feb 4 21:20:35 UTC 2020)) - MySQL (mysql Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using EditLine wrapper) - MySQL Server (user:root password:root) - MS SQL Server Client Tools -- Node.js (v12.16.0) +- Node.js (v12.16.1) - Grunt (grunt-cli v1.2.0) - Gulp (CLI version: 2.2.0 Local version: Unknown) -- n (6.2.0) +- n (6.3.1) - Parcel (1.12.4) -- TypeScript (Version 3.7.5) +- TypeScript (Version 3.8.3) - Webpack (4.41.6) - Webpack CLI (3.3.11) -- Yarn (1.21.1) +- Yarn (1.22.0) - PhantomJS (2.1.1) -- PHP 5.6 (PHP 5.6.40-21+ubuntu16.04.1+deb.sury.org+1 (cli) ) -- PHP 7.0 (PHP 7.0.33-20+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb 5 2020 16:54:09) ( NTS )) -- PHP 7.1 (PHP 7.1.33-9+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb 5 2020 16:53:10) ( NTS )) -- PHP 7.2 (PHP 7.2.27-6+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb 5 2020 16:52:09) ( NTS )) -- PHP 7.3 (PHP 7.3.14-6+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb 5 2020 16:51:13) ( NTS )) -- PHP 7.4 (PHP 7.4.2 (cli) (built: Feb 5 2020 16:50:21) ( NTS )) +- PHP 5.6 (PHP 5.6.40-24+ubuntu16.04.1+deb.sury.org+1 (cli) ) +- PHP 7.0 (PHP 7.0.33-23+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb 23 2020 07:20:42) ( NTS )) +- PHP 7.1 (PHP 7.1.33-12+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb 23 2020 07:21:57) ( NTS )) +- PHP 7.2 (PHP 7.2.28-3+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb 23 2020 07:23:01) ( NTS )) +- PHP 7.3 (PHP 7.3.15-3+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb 23 2020 07:23:10) ( NTS )) +- PHP 7.4 (PHP 7.4.3 (cli) (built: Feb 23 2020 07:24:02) ( NTS )) - Composer (Composer version 1.9.3 2020-02-04 12:58:49) - PHPUnit (PHPUnit 7.5.20 by Sebastian Bergmann and contributors.) - Pollinate @@ -177,11 +186,11 @@ Local version: Unknown) - ruby (2.3.1p112) - gem (3.1.2) - rustup (1.21.1) -- rust (1.41.0) +- rust (1.41.1) - cargo (1.41.0) - rustfmt (1.4.11-stable) - clippy (0.0.212) -- rustdoc (1.41.0) +- rustdoc (1.41.1) - bindgen (execute the 0.53.1) @@ -190,9 +199,9 @@ the - Selenium server standalone (available via SELENIUM_JAR_PATH environment variable) - Sphinx Open Source Search Server - Subversion (svn, version 1.9.3 (r1718519)) -- Terraform (Terraform v0.12.20) +- Terraform (Terraform v0.12.21) - Vcpkg 2020.02.04-unknownhash -- Zeit Now CLI (17.0.3) +- Zeit Now CLI (17.0.4) - Google Repository 58 - Google Play services 49 - Google APIs 24 @@ -203,7 +212,7 @@ the - Android Support Repository 47.0.0 - Android Solver for ConstraintLayout 1.0.2 - Android Solver for ConstraintLayout 1.0.1 -- Android SDK Platform-Tools 29.0.5 +- Android SDK Platform-Tools 29.0.6 - Android SDK Platform 29 - Android SDK Platform 28 - Android SDK Platform 27 @@ -257,14 +266,15 @@ the - Az Module (2.6.0) - Az Module (2.8.0) - Az Module (3.1.0) +- Az Module (3.5.0) - Cached container images - - node:12-alpine (Digest: sha256:0d6db03a05b5d8b417204258cfa34f36eac1c00a54946fb31891e89a642eb449) - - node:12 (Digest: sha256:454651174f54836571258a329788574cf6552bddfd1a7113e769bd9fc3776fe6) - - node:10-alpine (Digest: sha256:6e6fdca8006b268936d285a4eadd0bac011b33184b4377c6f1cfc86c222fbb8d) - - node:10 (Digest: sha256:e9d17a0920643d70677ba354398a0464e318fe5f488df8c28c0f895cda6ee2a3) - - buildpack-deps:stretch (Digest: sha256:8bcd320ec29cf67052985f28891586fb853051f69ad0646fc7a49f47d6e3ee1a) - - debian:9 (Digest: sha256:da5274336981301e2c5f2edb54eaa4dccee70c39506f96d39377b46ea75e804e) - - debian:8 (Digest: sha256:0e7a709bdf94e15391e9658271197e28a8c993f4d6bb8ee49d370886a9893351) + - node:10 (Digest: sha256:df200903ff34c07c1b9112b4fd9d1342c11eb7d99525f2b366c487f91dda8131) + - node:12 (Digest: sha256:facc1cbde6e5aa3255092b1a1417451953c80bd31ab5a4403f8bcd90b90a8407) + - buildpack-deps:stretch (Digest: sha256:dc901bbf4b34e4ca8771c0d0773e557221452f97bcf0c732de7ecda3782bdf97) + - debian:9 (Digest: sha256:ddb131307ad9c70ebf8c7962ba73c20101f68c7a511915aea3ad3b7ad47b9d20) + - debian:8 (Digest: sha256:2c9b2323299846c5298c12db373da310f8114f2941ae3f496e95270cc8ca5ebd) + - node:10-alpine (Digest: sha256:e8d05985dd93c380a83da00d676b081dad9cce148cb4ecdf26ed684fcff1449c) + - node:12-alpine (Digest: sha256:bba77d0ca8820b43af898b3c50d4e8b68dc703ebbd958319af2f21f2d3c309f5) - alpine:3.8 (Digest: sha256:2bb501e6173d9d006e56de5bce2720eb06396803300fe1687b58a7ff32bf4c14) - alpine:3.9 (Digest: sha256:115731bab0862031b44766733890091c17924f9b7781b79997f5f163be262178) - alpine:3.10 (Digest: sha256:7c3773f7bcc969f03f8f653910001d99a9d324b4b9caa008846ad2c3089f5a5f) @@ -276,7 +286,7 @@ the - Python 3.5.9 - Python 3.6.10 - Python 3.7.6 - - Python 3.8.1 + - Python 3.8.2 - Ruby: - Ruby 2.4.9 - Ruby 2.5.7 diff --git a/images/linux/Ubuntu1804-README.md b/images/linux/Ubuntu1804-README.md index b4f030966..4b35378c3 100644 --- a/images/linux/Ubuntu1804-README.md +++ b/images/linux/Ubuntu1804-README.md @@ -1,11 +1,16 @@ # Ubuntu 18.04.4 LTS -The following software is installed on machines with the 20200217.1 update. +The following software is installed on machines with the 20200301.1 update. *** - 7-Zip 16.02 - Ansible (ansible 2.9.4) - AzCopy (azcopy 7.3.0-netcore) -- Azure CLI (azure-cli 2.0.81) +- Azure CLI (azure-cli 2.1.0) - Azure CLI (azure-devops 0.17.0) +- Bazel (Build label: 2.1.1 +Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar +Build time: Fri Feb 21 14:56:47 2020 (1582297007) +Build timestamp: 1582297007 +Build timestamp as int: 1582297007) - Basic CLI: - curl - dnsutils @@ -26,23 +31,24 @@ The following software is installed on machines with the 20200217.1 update. - sudo - telnet - time + - tzdata - unzip - upx - wget - zip - - tzdata -- AWS CLI (aws-cli/1.18.0 Python/2.7.17 Linux/5.0.0-1031-azure botocore/1.15.0) + - zstd +- AWS CLI (aws-cli/1.18.11 Python/2.7.17 Linux/5.0.0-1032-azure botocore/1.15.11) - build-essential - Clang 6.0 (6.0.1) - Clang 8 (8.0.1) - Clang 9 (9.0.0) - CMake (cmake version 3.16.2) - Docker Compose (docker-compose version 1.22.0, build f46880fe) -- Docker (Docker version 3.0.10+azure, build 99c5edceb48d64c1aa5d09b8c9c499d431d98bb9) -- Docker (Docker version 3.0.10+azure, build 99c5edceb48d64c1aa5d09b8c9c499d431d98bb9) +- Docker-Moby (Docker version 3.0.10+azure, build 99c5edceb48d64c1aa5d09b8c9c499d431d98bb9) - .NET Core SDK: - 3.1.101 - 3.1.100 + - 3.0.103 - 3.0.102 - 3.0.101 - 3.0.100 @@ -67,11 +73,13 @@ The following software is installed on machines with the 20200217.1 update. - 2.2.102 - 2.2.101 - 2.2.100 + - 2.1.804 - 2.1.803 - 2.1.802 - 2.1.801 - 2.1.701 - 2.1.700 + - 2.1.609 - 2.1.608 - 2.1.607 - 2.1.606 @@ -79,6 +87,7 @@ The following software is installed on machines with the 20200217.1 update. - 2.1.604 - 2.1.603 - 2.1.602 + - 2.1.512 - 2.1.511 - 2.1.510 - 2.1.509 @@ -97,21 +106,21 @@ The following software is installed on machines with the 20200217.1 update. - 2.1.301 - 2.1.300 - Erlang (Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.6.4) -- Firefox (Mozilla Firefox 73.0) +- Firefox (Mozilla Firefox 73.0.1) - Geckodriver (); Gecko Driver is available via GECKOWEBDRIVER environment variable - GNU C++ 7.4.0 - GNU C++ 8.3.0 - GNU C++ 9.2.1 - GNU Fortran 8.3.0 - GNU Fortran 9.2.1 -- Git (2.25.0) +- Git (2.25.1) - Git Large File Storage (LFS) (2.10.0) - Go 1.11 (go version go1.11.12 linux/amd64) - Go 1.12 (go version go1.12.7 linux/amd64) - Go 1.13 (go version go1.13 linux/amd64) -- Google Chrome (Google Chrome 80.0.3987.106 ) +- Google Chrome (Google Chrome 80.0.3987.122 ) - Chromedriver (ChromeDriver 80.0.3987.106 (f68069574609230cf9b635cd784cfb1bf81bb53a-refs/branch-heads/3987@{#882})); Chrome Driver is available via CHROMEWEBDRIVER environment variable -- Google Cloud SDK (280.0.0) +- Google Cloud SDK (282.0.0) - Haskell Cabal (cabal-install version 2.0.0.1 compiled using version 2.0.1.1 of the Cabal library ) - Haskell Cabal (cabal-install version 2.2.0.0 @@ -119,7 +128,7 @@ compiled using version 2.2.0.1 of the Cabal library ) - Haskell Cabal (cabal-install version 2.4.1.0 compiled using version 2.4.1.0 of the Cabal library ) - Haskell Cabal (cabal-install version 3.0.1.0 -compiled using version 3.0.1.0 of the Cabal library ) +compiled using version 3.0.2.0 of the Cabal library ) - GHC (The Glorious Glasgow Haskell Compilation System, version 8.0.2) - GHC (The Glorious Glasgow Haskell Compilation System, version 8.2.2) - GHC (The Glorious Glasgow Haskell Compilation System, version 8.4.4) @@ -130,54 +139,54 @@ compiled using version 3.0.1.0 of the Cabal library ) - GHC (The Glorious Glasgow Haskell Compilation System, version 8.8.1) - GHC (The Glorious Glasgow Haskell Compilation System, version 8.8.2) - Haskell Stack (Version 2.1.3, Git revision 636e3a759d51127df2b62f90772def126cdf6d1f (7735 commits) x86_64 hpack-0.31.2) -- Heroku (heroku/7.38.1 linux-x64 node-v12.13.0) -- HHVM (HipHop VM 4.44.0 (rel)) +- Heroku (heroku/7.38.2 linux-x64 node-v12.13.0) +- HHVM (HipHop VM 4.46.0 (rel)) - ImageMagick - Azul Zulu OpenJDK (7) (openjdk version "1.7.0_252") - Azul Zulu OpenJDK (8) (openjdk version "1.8.0_242") - Azul Zulu OpenJDK (11) (openjdk version "11.0.6" 2020-01-14 LTS) - Azul Zulu OpenJDK (12) (openjdk version "12.0.2" 2019-07-16) - Ant (Apache Ant(TM) version 1.10.5 compiled on March 28 2019) -- Gradle 6.1.1 +- Gradle 6.2.1 - Maven (Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)) - Kind (kind v0.7.0 go1.13.6 linux/amd64) - kubectl (Client Version: v1.17.3) - helm (Client: v2.16.3+g1ee0254) -- Leiningen (Leiningen 2.9.1 on Java 1.8.0_242 OpenJDK 64-Bit Server VM) +- Leiningen (Leiningen 2.9.2 on Java 1.8.0_242 OpenJDK 64-Bit Server VM) - Mercurial (Mercurial Distributed SCM (version 4.5.3)) - Miniconda (conda 4.7.12) - Mono (Mono JIT compiler version 6.8.0.105 (tarball Tue Feb 4 21:20:20 UTC 2020)) - MySQL (mysql Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using EditLine wrapper) - MySQL Server (user:root password:root) - MS SQL Server Client Tools -- Node.js (v12.16.0) +- Node.js (v12.16.1) - Grunt (grunt-cli v1.2.0) - Gulp (CLI version: 2.2.0 Local version: Unknown) -- n (6.2.0) +- n (6.3.1) - Parcel (1.12.4) -- TypeScript (Version 3.7.5) +- TypeScript (Version 3.8.3) - Webpack (4.41.6) - Webpack CLI (3.3.11) -- Yarn (1.21.1) +- Yarn (1.22.0) - PhantomJS (2.1.1) -- PHP 7.1 (PHP 7.1.33-9+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Feb 5 2020 16:53:29) ( NTS )) -- PHP 7.2 (PHP 7.2.27-6+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Feb 5 2020 16:52:29) ( NTS )) -- PHP 7.3 (PHP 7.3.14-6+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Feb 5 2020 16:51:32) ( NTS )) -- PHP 7.4 (PHP 7.4.2 (cli) (built: Feb 5 2020 16:50:38) ( NTS )) +- PHP 7.1 (PHP 7.1.33-12+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Feb 23 2020 07:22:16) ( NTS )) +- PHP 7.2 (PHP 7.2.28-3+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Feb 23 2020 07:23:25) ( NTS )) +- PHP 7.3 (PHP 7.3.15-3+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Feb 23 2020 07:23:33) ( NTS )) +- PHP 7.4 (PHP 7.4.3 (cli) (built: Feb 23 2020 07:24:28) ( NTS )) - Composer (Composer version 1.9.3 2020-02-04 12:58:49) - PHPUnit (PHPUnit 7.5.20 by Sebastian Bergmann and contributors.) - Pollinate -- psql (PostgreSQL) 10.10 +- psql (PostgreSQL) 10.12 - Powershell (PowerShell 6.2.4) - ruby (2.5.1p57) - gem (3.1.2) - rustup (1.21.1) -- rust (1.41.0) +- rust (1.41.1) - cargo (1.41.0) - rustfmt (1.4.11-stable) - clippy (0.0.212) -- rustdoc (1.41.0) +- rustdoc (1.41.1) - bindgen (execute the 0.53.1) @@ -186,9 +195,9 @@ the - Selenium server standalone (available via SELENIUM_JAR_PATH environment variable) - Sphinx Open Source Search Server - Subversion (svn, version 1.9.7 (r1800392)) -- Terraform (Terraform v0.12.20) +- Terraform (Terraform v0.12.21) - Vcpkg 2020.02.04-unknownhash -- Zeit Now CLI (17.0.3) +- Zeit Now CLI (17.0.4) - Google Repository 58 - Google Play services 49 - Google APIs 24 @@ -197,7 +206,7 @@ the - Google APIs 21 - CMake 3.6.4111459 - Android Support Repository 47.0.0 -- Android SDK Platform-Tools 29.0.5 +- Android SDK Platform-Tools 29.0.6 - Android SDK Platform 29 - Android SDK Platform 28 - Android SDK Platform 27 @@ -247,14 +256,15 @@ the - Az Module (2.6.0) - Az Module (2.8.0) - Az Module (3.1.0) +- Az Module (3.5.0) - Cached container images - - node:12-alpine (Digest: sha256:0d6db03a05b5d8b417204258cfa34f36eac1c00a54946fb31891e89a642eb449) - - node:12 (Digest: sha256:454651174f54836571258a329788574cf6552bddfd1a7113e769bd9fc3776fe6) - - node:10-alpine (Digest: sha256:6e6fdca8006b268936d285a4eadd0bac011b33184b4377c6f1cfc86c222fbb8d) - - node:10 (Digest: sha256:e9d17a0920643d70677ba354398a0464e318fe5f488df8c28c0f895cda6ee2a3) - - buildpack-deps:stretch (Digest: sha256:8bcd320ec29cf67052985f28891586fb853051f69ad0646fc7a49f47d6e3ee1a) - - debian:9 (Digest: sha256:da5274336981301e2c5f2edb54eaa4dccee70c39506f96d39377b46ea75e804e) - - debian:8 (Digest: sha256:0e7a709bdf94e15391e9658271197e28a8c993f4d6bb8ee49d370886a9893351) + - node:10 (Digest: sha256:df200903ff34c07c1b9112b4fd9d1342c11eb7d99525f2b366c487f91dda8131) + - node:12 (Digest: sha256:facc1cbde6e5aa3255092b1a1417451953c80bd31ab5a4403f8bcd90b90a8407) + - buildpack-deps:stretch (Digest: sha256:dc901bbf4b34e4ca8771c0d0773e557221452f97bcf0c732de7ecda3782bdf97) + - debian:9 (Digest: sha256:ddb131307ad9c70ebf8c7962ba73c20101f68c7a511915aea3ad3b7ad47b9d20) + - debian:8 (Digest: sha256:2c9b2323299846c5298c12db373da310f8114f2941ae3f496e95270cc8ca5ebd) + - node:10-alpine (Digest: sha256:e8d05985dd93c380a83da00d676b081dad9cce148cb4ecdf26ed684fcff1449c) + - node:12-alpine (Digest: sha256:bba77d0ca8820b43af898b3c50d4e8b68dc703ebbd958319af2f21f2d3c309f5) - alpine:3.8 (Digest: sha256:2bb501e6173d9d006e56de5bce2720eb06396803300fe1687b58a7ff32bf4c14) - alpine:3.9 (Digest: sha256:115731bab0862031b44766733890091c17924f9b7781b79997f5f163be262178) - alpine:3.10 (Digest: sha256:7c3773f7bcc969f03f8f653910001d99a9d324b4b9caa008846ad2c3089f5a5f) @@ -266,7 +276,7 @@ the - Python 3.5.9 - Python 3.6.10 - Python 3.7.6 - - Python 3.8.1 + - Python 3.8.2 - Ruby: - Ruby 2.4.9 - Ruby 2.5.7 diff --git a/images/linux/scripts/base/repos.sh b/images/linux/scripts/base/repos.sh index f8280cc06..4ecd2028c 100644 --- a/images/linux/scripts/base/repos.sh +++ b/images/linux/scripts/base/repos.sh @@ -9,7 +9,11 @@ LSB_RELEASE=$(lsb_release -rs) # Install Microsoft repository wget https://packages.microsoft.com/config/ubuntu/$LSB_RELEASE/packages-microsoft-prod.deb dpkg -i packages-microsoft-prod.deb -apt-get update +apt-get install -y apt-transport-https ca-certificates curl software-properties-common # Install Microsoft GPG public key curl -L https://packages.microsoft.com/keys/microsoft.asc | apt-key add - + +curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg +mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg +apt-get update \ No newline at end of file diff --git a/images/linux/scripts/installers/1604/android.sh b/images/linux/scripts/installers/1604/android.sh index a2017cc3b..95a44edcf 100644 --- a/images/linux/scripts/installers/1604/android.sh +++ b/images/linux/scripts/installers/1604/android.sh @@ -39,6 +39,7 @@ echo "y" | ${ANDROID_ROOT}/tools/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} \ "platforms;android-17" \ "platforms;android-15" \ "platforms;android-10" \ + "build-tools;29.0.3" \ "build-tools;29.0.2" \ "build-tools;29.0.0" \ "build-tools;28.0.3" \ @@ -110,6 +111,7 @@ DocumentInstalledItem "Android SDK Platform 17" DocumentInstalledItem "Android SDK Platform 15" DocumentInstalledItem "Android SDK Platform 10" DocumentInstalledItem "Android SDK Patch Applier v4" +DocumentInstalledItem "Android SDK Build-Tools 29.0.3" DocumentInstalledItem "Android SDK Build-Tools 29.0.2" DocumentInstalledItem "Android SDK Build-Tools 29.0.0" DocumentInstalledItem "Android SDK Build-Tools 28.0.3" diff --git a/images/linux/scripts/installers/1604/basic.sh b/images/linux/scripts/installers/1604/basic.sh index 99c80a313..adc1e8098 100644 --- a/images/linux/scripts/installers/1604/basic.sh +++ b/images/linux/scripts/installers/1604/basic.sh @@ -19,6 +19,8 @@ apt-fast install -y --no-install-recommends \ iproute2 \ iputils-ping \ jq \ + libc++-dev \ + libc++abi-dev \ libcurl3 \ libicu55 \ libunwind8 \ @@ -75,6 +77,8 @@ DocumentInstalledItemIndent "ftp" DocumentInstalledItemIndent "iproute2" DocumentInstalledItemIndent "iputils-ping" DocumentInstalledItemIndent "jq" +DocumentInstalledItemIndent "libc++-dev" +DocumentInstalledItemIndent "libc++abi-dev" DocumentInstalledItemIndent "libcurl3" DocumentInstalledItemIndent "libicu55" DocumentInstalledItemIndent "libunwind8" diff --git a/images/linux/scripts/installers/1604/go.sh b/images/linux/scripts/installers/1604/go.sh deleted file mode 100644 index 00aa8274b..000000000 --- a/images/linux/scripts/installers/1604/go.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -################################################################################ -## File: go.sh -## Desc: Installs go, configures GOROOT, and adds go to the path -################################################################################ - -# Source the helpers for use with the script -source $HELPER_SCRIPTS/document.sh - -# This function installs Go using the specified arguments: -# $1=MajorVersion (1.11) -# $2=MajorAndMinorVersion (1.11.1) -# $3=IsDefaultVersion (true or false) -function InstallGo () { - curl -sL https://dl.google.com/go/go$2.linux-amd64.tar.gz -o go$2.linux-amd64.tar.gz - mkdir -p /usr/local/go$1 - tar -C /usr/local/go$1 -xzf go$2.linux-amd64.tar.gz --strip-components=1 go - rm go$2.linux-amd64.tar.gz - echo "GOROOT_${1//./_}_X64=/usr/local/go$1" | tee -a /etc/environment - DocumentInstalledItem "Go $1 ($(/usr/local/go$1/bin/go version))" - - # If this version of Go is to be the default version, - # symlink it into the path and point GOROOT to it. - if [ $3 = true ] - then - ln -s /usr/local/go$1/bin/* /usr/bin/ - echo "GOROOT=/usr/local/go$1" | tee -a /etc/environment - fi -} - -# Install Go versions -InstallGo 1.9 1.9.7 false -InstallGo 1.10 1.10.8 false -InstallGo 1.11 1.11.12 false -InstallGo 1.12 1.12.7 true -InstallGo 1.13 1.13 false diff --git a/images/linux/scripts/installers/1604/kubernetes-tools.sh b/images/linux/scripts/installers/1604/kubernetes-tools.sh index 448ecd05b..4855dc716 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://raw.githubusercontent.com/helm/helm/master/scripts/get | bash +curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | 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/android.sh b/images/linux/scripts/installers/1804/android.sh index 0c1fcad88..716f8bb19 100644 --- a/images/linux/scripts/installers/1804/android.sh +++ b/images/linux/scripts/installers/1804/android.sh @@ -37,6 +37,7 @@ echo "y" | ${ANDROID_ROOT}/tools/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} \ "platforms;android-21" \ "platforms;android-19" \ "platforms;android-17" \ + "build-tools;29.0.3" \ "build-tools;29.0.2" \ "build-tools;29.0.0" \ "build-tools;28.0.3" \ @@ -100,6 +101,7 @@ DocumentInstalledItem "Android SDK Platform 21" DocumentInstalledItem "Android SDK Platform 19" DocumentInstalledItem "Android SDK Platform 17" DocumentInstalledItem "Android SDK Patch Applier v4" +DocumentInstalledItem "Android SDK Build-Tools 29.0.3" DocumentInstalledItem "Android SDK Build-Tools 29.0.2" DocumentInstalledItem "Android SDK Build-Tools 29.0.0" DocumentInstalledItem "Android SDK Build-Tools 28.0.3" diff --git a/images/linux/scripts/installers/1804/azpowershell.sh b/images/linux/scripts/installers/1804/azpowershell.sh deleted file mode 100644 index 73d229458..000000000 --- a/images/linux/scripts/installers/1804/azpowershell.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -################################################################################ -## File: azpowershell.sh -## Desc: Installed Azure PowerShell -################################################################################ - -# Source the helpers for use with the script -source $HELPER_SCRIPTS/document.sh - -# Install Azure CLI (instructions taken from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) -sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_1.0.0 -RequiredVersion 1.0.0 -Force' -sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_1.6.0 -RequiredVersion 1.6.0 -Force' -sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_2.3.2 -RequiredVersion 2.3.2 -Force' -sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_2.6.0 -RequiredVersion 2.6.0 -Force' -sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_2.8.0 -RequiredVersion 2.8.0 -Force' -sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_3.1.0 -RequiredVersion 3.1.0 -Force' - -# 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 ! pwsh -Command '$actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_1.0.0:" + $env:PSModulePath; - if (!(get-module -listavailable -name Az.accounts)) { - Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1 - } - $env:PSModulePath = $actualPSModulePath - $actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_1.6.0:" + $env:PSModulePath; - if (!(get-module -listavailable -name Az.accounts)) { - Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1 - } - $env:PSModulePath = $actualPSModulePath - $actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_2.3.2:" + $env:PSModulePath; - if (!(get-module -listavailable -name Az.accounts)) { - Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1 - } - $env:PSModulePath = $actualPSModulePath - $actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_2.6.0:" + $env:PSModulePath; - if (!(get-module -listavailable -name Az.accounts)) { - Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1 - } - $env:PSModulePath = $actualPSModulePath - $actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_2.8.0:" + $env:PSModulePath; - if (!(get-module -listavailable -name Az.accounts)) { - Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1 - } - $env:PSModulePath = $actualPSModulePath - $actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_3.1.0:" + $env:PSModulePath; - if (!(get-module -listavailable -name Az.accounts)) { - Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1 - } - $env:PSModulePath = $actualPSModulePath'; then - exit 1 -fi - -# Document what was added to the image -echo "Lastly, documenting what we added to the metadata file" -DocumentInstalledItem "Az Module (1.0.0)" -DocumentInstalledItem "Az Module (1.6.0)" -DocumentInstalledItem "Az Module (2.3.2)" -DocumentInstalledItem "Az Module (2.6.0)" -DocumentInstalledItem "Az Module (2.8.0)" -DocumentInstalledItem "Az Module (3.1.0)" \ No newline at end of file diff --git a/images/linux/scripts/installers/1804/dotnetcore-sdk.sh b/images/linux/scripts/installers/1804/dotnetcore-sdk.sh deleted file mode 100644 index 27a922ee8..000000000 --- a/images/linux/scripts/installers/1804/dotnetcore-sdk.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/bash -################################################################################ -## File: dotnetcore-sdk.sh -## Desc: Installs .NET Core SDK -################################################################################ - -source $HELPER_SCRIPTS/apt.sh -source $HELPER_SCRIPTS/document.sh - -LATEST_DOTNET_PACKAGES=("dotnet-sdk-3.0" "dotnet-sdk-3.1") - -LSB_RELEASE=$(lsb_release -rs) - -mksamples() -{ - sdk=$1 - sample=$2 - mkdir "$sdk" - cd "$sdk" || exit - set -e - dotnet help - dotnet new globaljson --sdk-version "$sdk" - dotnet new "$sample" - dotnet restore - dotnet build - set +e - cd .. || exit - rm -rf "$sdk" -} - -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 - 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" - fi -done - -# Get list of all released SDKs from channels which are not end-of-life or preview -release_urls=("https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/2.1/releases.json" "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/2.2/releases.json" "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/3.0/releases.json" "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/3.1/releases.json") -sdks=() -for release_url in ${release_urls[@]}; do - echo "${release_url}" - releases=$(curl "${release_url}") - sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdk.version')) - sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdks[]?' | jq '.version')) -done - -sortedSdks=$(echo ${sdks[@]} | tr ' ' '\n' | grep -v preview | grep -v rc | grep -v display | cut -d\" -f2 | sort -u -r) - -for sdk in $sortedSdks; do - #temporary avoid 3.1.102 installation due to https://github.com/dotnet/aspnetcore/issues/19133 - if [ $sdk != "3.1.102" ]; then - url="https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$sdk/dotnet-sdk-$sdk-linux-x64.tar.gz" - echo "$url" >> urls - echo "Adding $url to list to download later" - fi -done - -# Download additional SDKs -echo "Downloading release tarballs..." -cat urls | xargs -n 1 -P 16 wget -q -for tarball in *.tar.gz; do - dest="./tmp-$(basename -s .tar.gz $tarball)" - echo "Extracting $tarball to $dest" - mkdir "$dest" && tar -C "$dest" -xzf "$tarball" - rsync -qav "$dest/shared/" /usr/share/dotnet/shared/ - rsync -qav "$dest/host/" /usr/share/dotnet/host/ - rsync -qav "$dest/sdk/" /usr/share/dotnet/sdk/ - rm -rf "$dest" - rm "$tarball" -done -rm urls - -DocumentInstalledItem ".NET Core SDK:" -# Smoke test each SDK -for sdk in $sortedSdks; do - mksamples "$sdk" "console" - mksamples "$sdk" "mstest" - mksamples "$sdk" "xunit" - mksamples "$sdk" "web" - mksamples "$sdk" "mvc" - mksamples "$sdk" "webapi" - DocumentInstalledItemIndent "$sdk" -done - -# NuGetFallbackFolder at /usr/share/dotnet/sdk/NuGetFallbackFolder is warmed up by smoke test -# Additional FTE will just copy to ~/.dotnet/NuGet which provides no benefit on a fungible machine -echo "DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1" | tee -a /etc/environment -echo 'export PATH="$PATH:$HOME/.dotnet/tools"' | tee -a /etc/skel/.bashrc diff --git a/images/linux/scripts/installers/1804/go.sh b/images/linux/scripts/installers/1804/go.sh deleted file mode 100644 index 6109faf2a..000000000 --- a/images/linux/scripts/installers/1804/go.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -################################################################################ -## File: go.sh -## Desc: Installs go, configures GOROOT, and adds go to the path -################################################################################ - -# Source the helpers for use with the script -source $HELPER_SCRIPTS/document.sh - -# This function installs Go using the specified arguments: -# $1=MajorVersion (1.11) -# $2=MajorAndMinorVersion (1.11.1) -# $3=IsDefaultVersion (true or false) -function InstallGo () { - curl -sL https://dl.google.com/go/go$2.linux-amd64.tar.gz -o go$2.linux-amd64.tar.gz - mkdir -p /usr/local/go$1 - tar -C /usr/local/go$1 -xzf go$2.linux-amd64.tar.gz --strip-components=1 go - rm go$2.linux-amd64.tar.gz - echo "GOROOT_${1//./_}_X64=/usr/local/go$1" | tee -a /etc/environment - DocumentInstalledItem "Go $1 ($(/usr/local/go$1/bin/go version))" - - # If this version of Go is to be the default version, - # symlink it into the path and point GOROOT to it. - if [ $3 = true ] - then - ln -s /usr/local/go$1/bin/* /usr/bin/ - echo "GOROOT=/usr/local/go$1" | tee -a /etc/environment - fi -} - -# Install Go versions -InstallGo 1.11 1.11.12 false -InstallGo 1.12 1.12.7 true -InstallGo 1.13 1.13 false diff --git a/images/linux/scripts/installers/1804/kubernetes-tools.sh b/images/linux/scripts/installers/1804/kubernetes-tools.sh index ba6f0aa03..38659028f 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://raw.githubusercontent.com/helm/helm/master/scripts/get | bash +curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | 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/powershellcore.sh b/images/linux/scripts/installers/1804/powershellcore.sh deleted file mode 100644 index 72ccdfa90..000000000 --- a/images/linux/scripts/installers/1804/powershellcore.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -################################################################################ -## File: powershellcore.sh -## Desc: Installs powershellcore -################################################################################ - -# Source the helpers for use with the script -source $HELPER_SCRIPTS/document.sh - -LSB_RELEASE=$(lsb_release -rs) -# libicu64, which comes with php-intl module, has powershell breaking issue https://github.com/PowerShell/PowerShell/issues/9746 -# Fix - install additional libicu65 where the issue is fixed -echo "install libicu65" -apt get install libicu65 - -# Install Powershell -apt-get install -y powershell - -# 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 pwsh; then - echo "pwsh was not installed" - exit 1 -fi -if ! pwsh -c 'Write-Host Hello world'; then - echo "pwsh failed to run" - exit 1 -fi - -# Document what was added to the image -echo "Lastly, documenting what we added to the metadata file" -DocumentInstalledItem "Powershell ($(pwsh --version))" diff --git a/images/linux/scripts/installers/1604/azpowershell.sh b/images/linux/scripts/installers/azpowershell.sh similarity index 86% rename from images/linux/scripts/installers/1604/azpowershell.sh rename to images/linux/scripts/installers/azpowershell.sh index 74503d1eb..1e87d9b1e 100644 --- a/images/linux/scripts/installers/1604/azpowershell.sh +++ b/images/linux/scripts/installers/azpowershell.sh @@ -14,6 +14,7 @@ sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_2.3.2 -Requi sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_2.6.0 -RequiredVersion 2.6.0 -Force' sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_2.8.0 -RequiredVersion 2.8.0 -Force' sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_3.1.0 -RequiredVersion 3.1.0 -Force' +sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_3.5.0 -RequiredVersion 3.5.0 -Force' # Run tests to determine that the software installed as expected echo "Testing to make sure that script performed as expected, and basic scenarios work" @@ -46,6 +47,11 @@ if ! pwsh -Command '$actualPSModulePath = $env:PSModulePath ; $env:PSModulePath if (!(get-module -listavailable -name Az.accounts)) { Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1 } + $env:PSModulePath = $actualPSModulePath + $actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_3.5.0:" + $env:PSModulePath; + if (!(get-module -listavailable -name Az.accounts)) { + Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1 + } $env:PSModulePath = $actualPSModulePath'; then exit 1 fi @@ -58,3 +64,4 @@ DocumentInstalledItem "Az Module (2.3.2)" DocumentInstalledItem "Az Module (2.6.0)" DocumentInstalledItem "Az Module (2.8.0)" DocumentInstalledItem "Az Module (3.1.0)" +DocumentInstalledItem "Az Module (3.5.0)" diff --git a/images/linux/scripts/installers/bazel.sh b/images/linux/scripts/installers/bazel.sh new file mode 100644 index 000000000..d058d5764 --- /dev/null +++ b/images/linux/scripts/installers/bazel.sh @@ -0,0 +1,36 @@ +#!/bin/bash +################################################################################ +## File: bazel.sh +## Desc: Installs Bazel and Bazelisk (A user-friendly launcher for Bazel) +################################################################################ + +# Source the helpers for use with the script +source $HELPER_SCRIPTS/document.sh + +# Install bazel +curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add - +echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list +apt-get update -y +apt-get install -y bazel + +# Install bazelisk +npm install -g @bazel/bazelisk + +# 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 bazel; then + echo "Bazel was not installed" + exit 1 +fi + +if ! command -v bazelisk; then + echo "Bazelisk was not installed" + exit 1 +fi + +# Document what was added to the image +bazelisk_version="$(bazelisk version 2>null | grep "Bazelisk version:" | cut -d "v" -f 3)" + +echo "Lastly, documenting what we added to the metadata file" +DocumentInstalledItem "Bazel ($(bazel --version))" +DocumentInstalledItem "Bazelisk ($bazelisk_version)" diff --git a/images/linux/scripts/installers/clang.sh b/images/linux/scripts/installers/clang.sh index 0a7f2252f..1ca4cde2c 100644 --- a/images/linux/scripts/installers/clang.sh +++ b/images/linux/scripts/installers/clang.sh @@ -18,6 +18,7 @@ function InstallClang { apt-get install -y "clang-$version" "lldb-$version" "lld-$version" else ./llvm.sh $version + apt-get install -y "clang-format-$version" fi # Run tests to determine that the software installed as expected @@ -59,3 +60,4 @@ 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 +update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-9 100 diff --git a/images/linux/scripts/installers/docker-compose.sh b/images/linux/scripts/installers/docker-compose.sh index cd8f09ebd..1ba93f99d 100644 --- a/images/linux/scripts/installers/docker-compose.sh +++ b/images/linux/scripts/installers/docker-compose.sh @@ -7,7 +7,7 @@ source $HELPER_SCRIPTS/apt.sh source $HELPER_SCRIPTS/document.sh -version="1.22.0" +version="1.25.4" # Install latest docker-compose from releases curl -L "https://github.com/docker/compose/releases/download/$version/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose diff --git a/images/linux/scripts/installers/docker-moby.sh b/images/linux/scripts/installers/docker-moby.sh index 625c93cfa..b9d43b546 100644 --- a/images/linux/scripts/installers/docker-moby.sh +++ b/images/linux/scripts/installers/docker-moby.sh @@ -1,7 +1,7 @@ #!/bin/bash ################################################################################ -## File: docker-ce.sh -## Desc: Installs docker onto the image, but does not pre-pull any images +## File: docker-moby.sh +## Desc: Installs docker onto the image ################################################################################ source $HELPER_SCRIPTS/apt.sh @@ -15,10 +15,6 @@ if ! IsInstalled $docker_package; then echo "Docker ($docker_package) was not found. Installing..." apt-get remove -y moby-engine moby-cli apt-get update - apt-get install -y apt-transport-https ca-certificates curl software-properties-common - curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/microsoft-prod.list - apt-get update apt-get install -y moby-engine moby-cli else echo "Docker ($docker_package) is already installed" @@ -37,7 +33,19 @@ else set +e fi +docker pull node:10 +docker pull node:12 +docker pull buildpack-deps:stretch +docker pull node:10-alpine +docker pull node:12-alpine +docker pull debian:8 +docker pull debian:9 +docker pull alpine:3.7 +docker pull alpine:3.8 +docker pull alpine:3.9 +docker pull alpine:3.10 + ## Add version information to the metadata file echo "Documenting Docker version" docker_version=$(docker -v) -DocumentInstalledItem "Docker ($docker_version)" +DocumentInstalledItem "Docker-Moby ($docker_version)" diff --git a/images/linux/scripts/installers/docker.sh b/images/linux/scripts/installers/docker.sh deleted file mode 100644 index b7fb84e6a..000000000 --- a/images/linux/scripts/installers/docker.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -################################################################################ -## File: docker.sh -## Desc: Installs the correct version of docker onto the image, and pulls -## down the default docker image used for building on ubuntu -################################################################################ - -source $HELPER_SCRIPTS/apt.sh -source $HELPER_SCRIPTS/document.sh - -DOCKER_PACKAGE=moby - -apt-get remove -y moby-engine mobi-cli -apt-get update -apt-get install -y apt-transport-https ca-certificates curl software-properties-common -apt-get update -apt-get install -y moby-engine mobi-cli - -docker pull node:10 -docker pull node:12 -docker pull buildpack-deps:stretch -docker pull node:10-alpine -docker pull node:12-alpine -docker pull debian:8 -docker pull debian:9 -docker pull alpine:3.7 -docker pull alpine:3.8 -docker pull alpine:3.9 -docker pull alpine:3.10 - -## Add version information to the metadata file -echo "Documenting Docker version" -DOCKER_VERSION=`docker -v` -DocumentInstalledItem "Docker ($DOCKER_VERSION)" diff --git a/images/linux/scripts/installers/1604/dotnetcore-sdk.sh b/images/linux/scripts/installers/dotnetcore-sdk.sh similarity index 79% rename from images/linux/scripts/installers/1604/dotnetcore-sdk.sh rename to images/linux/scripts/installers/dotnetcore-sdk.sh index 0193708e6..d0e138103 100644 --- a/images/linux/scripts/installers/1604/dotnetcore-sdk.sh +++ b/images/linux/scripts/installers/dotnetcore-sdk.sh @@ -3,7 +3,6 @@ ## File: dotnetcore-sdk.sh ## Desc: Installs .NET Core SDK ################################################################################ - source $HELPER_SCRIPTS/apt.sh source $HELPER_SCRIPTS/document.sh @@ -30,11 +29,19 @@ 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 echo "Could not find .NET Core ($latest_package), installing..." - apt-get install $latest_package -y + #temporary avoid 3.1.102 installation due to https://github.com/dotnet/aspnetcore/issues/19133 + if [ $latest_package != "dotnet-sdk-3.1" ]; then + apt-get install $latest_package -y + else + apt-get install dotnet-sdk-3.1=3.1.101-1 -y + fi else echo ".NET Core ($latest_package) is already installed" fi @@ -50,15 +57,13 @@ for release_url in ${release_urls[@]}; do sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdks[]?' | jq '.version')) done -sortedSdks=$(echo ${sdks[@]} | tr ' ' '\n' | grep -v preview | grep -v rc | grep -v display | cut -d\" -f2 | sort -u -r) +#temporary avoid 3.1.102 installation due to https://github.com/dotnet/aspnetcore/issues/19133 +sortedSdks=$(echo ${sdks[@]} | tr ' ' '\n' | grep -v 3.1.102 | grep -v preview | grep -v rc | grep -v display | cut -d\" -f2 | sort -u -r) for sdk in $sortedSdks; do - #temporary avoid 3.1.102 installation due to https://github.com/dotnet/aspnetcore/issues/19133 - if [ $sdk != "3.1.102" ]; then - url="https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$sdk/dotnet-sdk-$sdk-linux-x64.tar.gz" - echo "$url" >> urls - echo "Adding $url to list to download later" - fi + url="https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$sdk/dotnet-sdk-$sdk-linux-x64.tar.gz" + echo "$url" >> urls + echo "Adding $url to list to download later" done # Download additional SDKs diff --git a/images/linux/scripts/installers/firefox.sh b/images/linux/scripts/installers/firefox.sh index aa920774a..c98f43c54 100644 --- a/images/linux/scripts/installers/firefox.sh +++ b/images/linux/scripts/installers/firefox.sh @@ -49,5 +49,5 @@ if ! command -v geckodriver; then fi echo "Lastly, documenting what we added to the metadata file" -ver=`./geckodriver --version|head -1|awk '{print $2}'` +ver=`geckodriver --version | head -1 |awk '{print $2}'` DocumentInstalledItem "Geckodriver (${ver}); Gecko Driver is available via GECKOWEBDRIVER environment variable" diff --git a/images/linux/scripts/installers/go.sh b/images/linux/scripts/installers/go.sh new file mode 100644 index 000000000..8a16eef84 --- /dev/null +++ b/images/linux/scripts/installers/go.sh @@ -0,0 +1,55 @@ +#!/bin/bash +################################################################################ +## File: go.sh +## Desc: Installs go, configures GOROOT, and adds go to the path +################################################################################ + +# Source the helpers for use with the script +source $HELPER_SCRIPTS/document.sh +golangTags="/tmp/golang_tags.json" + +# This function installs Go using the specified arguments: +# $1=MajorVersion (1.11) +# $2=IsDefaultVersion (true or false) +function InstallGo () { + version=$( getFullGoVersion $1 ) + downloadVersion=$version.linux-amd64.tar.gz + goFolder=/usr/local/go$1 + + echo "Install Go $version" + curl -sL https://dl.google.com/go/${downloadVersion} -o ${downloadVersion} + mkdir -p $goFolder + tar -C $goFolder -xzf $downloadVersion --strip-components=1 go + rm $downloadVersion + echo "GOROOT_${1//./_}_X64=$goFolder" | tee -a /etc/environment + DocumentInstalledItem "Go $1 ($($goFolder/bin/go version))" + + # If this version of Go is to be the default version, + # symlink it into the path and point GOROOT to it. + if [ $2 = true ] + then + ln -s $goFolder/bin/* /usr/bin/ + echo "GOROOT=$goFolder" | tee -a /etc/environment + fi +} + +function getFullGoVersion () { + local pattern="refs/tags/go$1([.0-9]{0,3})$" + local query='[.[] | select( .ref | test($pattern))] | .[-1] | .ref' + refValue=$(jq --arg pattern "$pattern" "$query" $golangTags) + version=$(echo "$refValue" | cut -d '/' -f 3) + version=$(echo "${version//\"}") # go1.12.17 + echo $version +} + +# load golang_tags.json file +curl -s 'https://api.github.com/repos/golang/go/git/refs/tags' >> $golangTags +# Install Go versions +for go in ${GO_VERSIONS}; do + echo "Installing Go ${go}" + if [[ $go == $GO_DEFAULT ]]; then + InstallGo $go true + else + InstallGo $go false + fi +done \ No newline at end of file diff --git a/images/linux/scripts/installers/google-chrome.sh b/images/linux/scripts/installers/google-chrome.sh index 979e2b376..892380ce7 100644 --- a/images/linux/scripts/installers/google-chrome.sh +++ b/images/linux/scripts/installers/google-chrome.sh @@ -56,4 +56,4 @@ if ! command -v chromedriver; then fi echo "Lastly, documenting what we added to the metadata file" -DocumentInstalledItem "Chromedriver ($(chromedriver --version)); Chrome Driver is available via CHROMEWEBDRIVER environment variable" +DocumentInstalledItem "$(chromedriver --version); Chrome Driver is available via CHROMEWEBDRIVER environment variable" diff --git a/images/linux/scripts/installers/haskell.sh b/images/linux/scripts/installers/haskell.sh index 14429e92d..05e430df0 100644 --- a/images/linux/scripts/installers/haskell.sh +++ b/images/linux/scripts/installers/haskell.sh @@ -25,6 +25,7 @@ apt-get install -y \ ghc-8.6.5 \ ghc-8.8.1 \ ghc-8.8.2 \ + ghc-8.8.3 \ cabal-install-2.0 \ cabal-install-2.2 \ cabal-install-2.4 \ @@ -36,7 +37,7 @@ curl -sSL https://raw.githubusercontent.com/commercialhaskell/stack/v2.1.3/etc/s # Run tests to determine that the software installed as expected echo "Testing to make sure that script performed as expected, and basic scenarios work" # Check all ghc versions -for version in 8.0.2 8.2.2 8.4.4 8.6.2 8.6.3 8.6.4 8.6.5 8.8.1 8.8.2; do +for version in 8.0.2 8.2.2 8.4.4 8.6.2 8.6.3 8.6.4 8.6.5 8.8.1 8.8.2 8.8.3; do if ! command -v /opt/ghc/$version/bin/ghc; then echo "ghc $version was not installed" exit 1 @@ -59,7 +60,7 @@ echo "Lastly, documenting what we added to the metadata file" for version in 2.0 2.2 2.4 3.0; do DocumentInstalledItem "Haskell Cabal ($(/opt/cabal/$version/bin/cabal --version))" done -for version in 8.0.2 8.2.2 8.4.4 8.6.2 8.6.3 8.6.4 8.6.5 8.8.1 8.8.2; do +for version in 8.0.2 8.2.2 8.4.4 8.6.2 8.6.3 8.6.4 8.6.5 8.8.1 8.8.2 8.8.3; do DocumentInstalledItem "GHC ($(/opt/ghc/$version/bin/ghc --version))" done DocumentInstalledItem "Haskell Stack ($(stack --version))" diff --git a/images/linux/scripts/installers/julia.sh b/images/linux/scripts/installers/julia.sh index 1ca450320..a576a5405 100644 --- a/images/linux/scripts/installers/julia.sh +++ b/images/linux/scripts/installers/julia.sh @@ -23,17 +23,18 @@ function GetLatestJuliaRelease () { function InstallJulia () { # Extract Major and Minor version from full version string - juliaMajorAndMinorVersion="$(sed 's/\.[^.]*$//' <<< $1)" + juliaMajorAndMinorVersion="$(cut -d. -f1,2 <<< $1)" + juliaInstallationPath="/usr/local/julia$1" curl -sL "https://julialang-s3.julialang.org/bin/linux/x64/$juliaMajorAndMinorVersion/julia-$1-linux-x86_64.tar.gz" -o "julia-$1-linux-x86_64.tar.gz" - mkdir -p "/usr/local/julia$juliaMajorAndMinorVersion" - tar -C "/usr/local/julia$juliaMajorAndMinorVersion" -xzf "julia-$1-linux-x86_64.tar.gz" --strip-components=1 julia + mkdir -p "$juliaInstallationPath" + tar -C "$juliaInstallationPath" -xzf "julia-$1-linux-x86_64.tar.gz" --strip-components=1 rm "julia-$1-linux-x86_64.tar.gz" # If this version of Julia is to be the default version, # symlink it into the path if [ "$2" = true ]; then - ln -s "/usr/local/julia$juliaMajorAndMinorVersion/bin/julia" /usr/bin/julia + ln -s "$juliaInstallationPath/bin/julia" /usr/bin/julia fi # Run tests to determine that the software installed as expected @@ -49,7 +50,7 @@ function InstallJulia () { fi # Verify output of julia --version - if [ ! "$(/usr/local/julia"$juliaMajorAndMinorVersion"/bin/julia --version)" = "julia version $1" ]; then + if [ ! "$($juliaInstallationPath/bin/julia --version)" = "julia version $1" ]; then echo "Julia was not installed correctly" exit 1 fi diff --git a/images/linux/scripts/installers/mysql.sh b/images/linux/scripts/installers/mysql.sh index 63474e39f..98d0d665a 100644 --- a/images/linux/scripts/installers/mysql.sh +++ b/images/linux/scripts/installers/mysql.sh @@ -44,3 +44,7 @@ echo "Lastly, documenting what we added to the metadata file" DocumentInstalledItem "MySQL ($(mysql --version))" DocumentInstalledItem "MySQL Server (user:root password:root)" DocumentInstalledItem "MS SQL Server Client Tools" + +# Disable mysql.service +systemctl is-active --quiet mysql.service && systemctl stop mysql.service +systemctl disable mysql.service diff --git a/images/linux/scripts/installers/packer.sh b/images/linux/scripts/installers/packer.sh new file mode 100644 index 000000000..cba8dfb7b --- /dev/null +++ b/images/linux/scripts/installers/packer.sh @@ -0,0 +1,25 @@ +#!/bin/bash +################################################################################ +## File: packer.sh +## Desc: Installs packer +################################################################################ +# Source the helpers for use with the script +source $HELPER_SCRIPTS/document.sh +source $HELPER_SCRIPTS/apt.sh + +# Install Packer +PACKER_VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packer | jq -r .current_version) +curl -LO "https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_linux_amd64.zip" +unzip "packer_${PACKER_VERSION}_linux_amd64.zip" -d /usr/local/bin +rm -f "packer_${PACKER_VERSION}_linux_amd64.zip" + +# 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 packer; then + echo "Packer was not installed or found on PATH" + exit 1 +fi + +# Document what was added to the image +echo "Lastly, documenting what we added to the metadata file" +DocumentInstalledItem "Packer ($(packer --version))" diff --git a/images/linux/scripts/installers/1604/powershellcore.sh b/images/linux/scripts/installers/powershellcore.sh similarity index 96% rename from images/linux/scripts/installers/1604/powershellcore.sh rename to images/linux/scripts/installers/powershellcore.sh index 8ace4742c..5c615ae31 100644 --- a/images/linux/scripts/installers/1604/powershellcore.sh +++ b/images/linux/scripts/installers/powershellcore.sh @@ -7,8 +7,6 @@ # Source the helpers for use with the script source $HELPER_SCRIPTS/document.sh -LSB_RELEASE=$(lsb_release -rs) - # Install Powershell apt-get install -y powershell diff --git a/images/linux/scripts/installers/preimagedata.sh b/images/linux/scripts/installers/preimagedata.sh new file mode 100644 index 000000000..91b36a9cb --- /dev/null +++ b/images/linux/scripts/installers/preimagedata.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +imagedata_file=$IMAGEDATA_FILE +image_version=$IMAGE_VERSION +os_name=$(lsb_release -ds | sed "s/ /\\\n/g") +image_label="ubuntu-$(lsb_release -rs)" +github_url="https://github.com/actions/virtual-environments/blob" + +if [[ "$image_label" =~ "ubuntu-18" ]]; then + software_url="${github_url}/ubuntu18/${image_version}/images/linux/Ubuntu1804-README.md" +fi + +if [[ "$image_label" =~ "ubuntu-16" ]]; then + software_url="${github_url}/ubuntu16/${image_version}/images/linux/Ubuntu1604-README.md" +fi + +cat < $imagedata_file +[ + { + "group": "Operating System", + "detail": "${os_name}" + }, + { + "group": "Virtual Environment", + "detail": "Environment: ${image_label}\nVersion: ${image_version}\nIncluded Software: ${software_url}" + } +] +EOF \ No newline at end of file diff --git a/images/linux/scripts/installers/rust.sh b/images/linux/scripts/installers/rust.sh index d690f3804..571538a30 100644 --- a/images/linux/scripts/installers/rust.sh +++ b/images/linux/scripts/installers/rust.sh @@ -14,8 +14,7 @@ export CARGO_HOME=/usr/share/rust/.cargo curl https://sh.rustup.rs -sSf | sh -s -- -y -# Add Cargo and Rust binaries to the machine path -echo "PATH=${CARGO_HOME}/bin:$PATH" | tee -a /etc/environment +# Initialize environment variables source $CARGO_HOME/env # Install common tools diff --git a/images/linux/scripts/installers/updatepath.sh b/images/linux/scripts/installers/updatepath.sh new file mode 100644 index 000000000..7d63ceb1e --- /dev/null +++ b/images/linux/scripts/installers/updatepath.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +CARGO_HOME=/usr/share/rust/.cargo +DOTNET_TOOLS_HOME=/home/runner/.dotnet/tools +PHP_COMPOSER_HOME=/home/runner/.config/composer/vendor/bin +echo "PATH=${CARGO_HOME}/bin:${PATH}:${DOTNET_TOOLS_HOME}:${PHP_COMPOSER_HOME}" | tee -a /etc/environment \ No newline at end of file diff --git a/images/linux/ubuntu1604.json b/images/linux/ubuntu1604.json index ae2ac159e..51e1bb51b 100644 --- a/images/linux/ubuntu1604.json +++ b/images/linux/ubuntu1604.json @@ -15,6 +15,7 @@ "private_virtual_network_with_public_ip": "{{env `PRIVATE_VIRTUAL_NETWORK_WITH_PUBLIC_IP`}}", "image_folder": "/imagegeneration", "commit_file": "/imagegeneration/commit.txt", + "imagedata_file": "/imagegeneration/imagedata.json", "metadata_file": "/imagegeneration/metadatafile", "installer_script_folder": "/imagegeneration/installers", "helper_script_folder": "/imagegeneration/helpers", @@ -22,7 +23,9 @@ "capture_name_prefix": "packer", "image_version": "dev", "image_os": "ubuntu16", - "github_feed_token": null + "github_feed_token": null, + "go_default": "1.14", + "go_versions": "1.11 1.12 1.13 1.14" }, "sensitive-variables": ["client_secret", "github_feed_token"], "builders": [ @@ -107,6 +110,17 @@ ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, + { + "type": "shell", + "scripts":[ + "{{template_dir}}/scripts/installers/preimagedata.sh" + ], + "environment_vars": [ + "IMAGE_VERSION={{user `image_version`}}", + "IMAGEDATA_FILE={{user `imagedata_file`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, { "type": "shell", "inline": [ @@ -130,14 +144,12 @@ "{{template_dir}}/scripts/installers/cmake.sh", "{{template_dir}}/scripts/installers/docker-compose.sh", "{{template_dir}}/scripts/installers/docker-moby.sh", - "{{template_dir}}/scripts/installers/docker.sh", - "{{template_dir}}/scripts/installers/1604/dotnetcore-sdk.sh", + "{{template_dir}}/scripts/installers/dotnetcore-sdk.sh", "{{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", "{{template_dir}}/scripts/installers/google-cloud-sdk.sh", "{{template_dir}}/scripts/installers/haskell.sh", @@ -153,20 +165,24 @@ "{{template_dir}}/scripts/installers/mono.sh", "{{template_dir}}/scripts/installers/mysql.sh", "{{template_dir}}/scripts/installers/nodejs.sh", + "{{template_dir}}/scripts/installers/bazel.sh", "{{template_dir}}/scripts/installers/phantomjs.sh", "{{template_dir}}/scripts/installers/1604/php.sh", "{{template_dir}}/scripts/installers/pollinate.sh", "{{template_dir}}/scripts/installers/postgresql.sh", - "{{template_dir}}/scripts/installers/1604/powershellcore.sh", + "{{template_dir}}/scripts/installers/powershellcore.sh", "{{template_dir}}/scripts/installers/ruby.sh", "{{template_dir}}/scripts/installers/rust.sh", + "{{template_dir}}/scripts/installers/julia.sh", "{{template_dir}}/scripts/installers/sbt.sh", "{{template_dir}}/scripts/installers/selenium.sh", "{{template_dir}}/scripts/installers/sphinx.sh", "{{template_dir}}/scripts/installers/subversion.sh", "{{template_dir}}/scripts/installers/terraform.sh", + "{{template_dir}}/scripts/installers/packer.sh", "{{template_dir}}/scripts/installers/vcpkg.sh", "{{template_dir}}/scripts/installers/zeit-now.sh", + "{{template_dir}}/scripts/installers/updatepath.sh", "{{template_dir}}/scripts/installers/dpkg-config.sh" ], @@ -177,6 +193,19 @@ ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/go.sh" + ], + "environment_vars": [ + "METADATA_FILE={{user `metadata_file`}}", + "HELPER_SCRIPTS={{user `helper_script_folder`}}", + "GO_VERSIONS={{user `go_versions`}}", + "GO_DEFAULT={{user `go_default`}}" + ], + "execute_command": "chmod +x {{ .Path }}; sudo {{ .Vars }} {{ .Path }}" + }, { "type": "file", "source": "{{template_dir}}/toolcache-1604.json", @@ -186,7 +215,7 @@ "type": "shell", "scripts":[ "{{template_dir}}/scripts/installers/1604/android.sh", - "{{template_dir}}/scripts/installers/1604/azpowershell.sh", + "{{template_dir}}/scripts/installers/azpowershell.sh", "{{template_dir}}/scripts/helpers/containercache.sh", "{{template_dir}}/scripts/installers/hosted-tool-cache.sh", "{{template_dir}}/scripts/installers/python.sh", diff --git a/images/linux/ubuntu1804.json b/images/linux/ubuntu1804.json index 3c7ce3279..33800251c 100644 --- a/images/linux/ubuntu1804.json +++ b/images/linux/ubuntu1804.json @@ -15,6 +15,7 @@ "private_virtual_network_with_public_ip": "{{env `PRIVATE_VIRTUAL_NETWORK_WITH_PUBLIC_IP`}}", "image_folder": "/imagegeneration", "commit_file": "/imagegeneration/commit.txt", + "imagedata_file": "/imagegeneration/imagedata.json", "metadata_file": "/imagegeneration/metadatafile", "installer_script_folder": "/imagegeneration/installers", "helper_script_folder": "/imagegeneration/helpers", @@ -22,7 +23,9 @@ "capture_name_prefix": "packer", "image_version": "dev", "image_os": "ubuntu18", - "github_feed_token": null + "github_feed_token": null, + "go_default": "1.14", + "go_versions": "1.11 1.12 1.13 1.14" }, "sensitive-variables": ["client_secret", "github_feed_token"], "builders": [ @@ -110,6 +113,17 @@ ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, + { + "type": "shell", + "scripts":[ + "{{template_dir}}/scripts/installers/preimagedata.sh" + ], + "environment_vars": [ + "IMAGE_VERSION={{user `image_version`}}", + "IMAGEDATA_FILE={{user `imagedata_file`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, { "type": "shell", "inline": [ @@ -133,14 +147,12 @@ "{{template_dir}}/scripts/installers/cmake.sh", "{{template_dir}}/scripts/installers/docker-compose.sh", "{{template_dir}}/scripts/installers/docker-moby.sh", - "{{template_dir}}/scripts/installers/docker.sh", - "{{template_dir}}/scripts/installers/1804/dotnetcore-sdk.sh", + "{{template_dir}}/scripts/installers/dotnetcore-sdk.sh", "{{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", "{{template_dir}}/scripts/installers/google-cloud-sdk.sh", "{{template_dir}}/scripts/installers/haskell.sh", @@ -156,20 +168,24 @@ "{{template_dir}}/scripts/installers/mono.sh", "{{template_dir}}/scripts/installers/mysql.sh", "{{template_dir}}/scripts/installers/nodejs.sh", + "{{template_dir}}/scripts/installers/bazel.sh", "{{template_dir}}/scripts/installers/phantomjs.sh", "{{template_dir}}/scripts/installers/1804/php.sh", "{{template_dir}}/scripts/installers/pollinate.sh", "{{template_dir}}/scripts/installers/postgresql.sh", - "{{template_dir}}/scripts/installers/1804/powershellcore.sh", + "{{template_dir}}/scripts/installers/powershellcore.sh", "{{template_dir}}/scripts/installers/ruby.sh", "{{template_dir}}/scripts/installers/rust.sh", + "{{template_dir}}/scripts/installers/julia.sh", "{{template_dir}}/scripts/installers/sbt.sh", "{{template_dir}}/scripts/installers/selenium.sh", "{{template_dir}}/scripts/installers/sphinx.sh", "{{template_dir}}/scripts/installers/subversion.sh", "{{template_dir}}/scripts/installers/terraform.sh", + "{{template_dir}}/scripts/installers/packer.sh", "{{template_dir}}/scripts/installers/vcpkg.sh", "{{template_dir}}/scripts/installers/zeit-now.sh", + "{{template_dir}}/scripts/installers/updatepath.sh", "{{template_dir}}/scripts/installers/dpkg-config.sh" ], "environment_vars": [ @@ -179,6 +195,19 @@ ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/go.sh" + ], + "environment_vars": [ + "METADATA_FILE={{user `metadata_file`}}", + "HELPER_SCRIPTS={{user `helper_script_folder`}}", + "GO_VERSIONS={{user `go_versions`}}", + "GO_DEFAULT={{user `go_default`}}" + ], + "execute_command": "chmod +x {{ .Path }}; sudo {{ .Vars }} {{ .Path }}" + }, { "type": "file", "source": "{{template_dir}}/toolcache-1804.json", @@ -188,7 +217,7 @@ "type": "shell", "scripts":[ "{{template_dir}}/scripts/installers/1804/android.sh", - "{{template_dir}}/scripts/installers/1804/azpowershell.sh", + "{{template_dir}}/scripts/installers/azpowershell.sh", "{{template_dir}}/scripts/helpers/containercache.sh", "{{template_dir}}/scripts/installers/hosted-tool-cache.sh", "{{template_dir}}/scripts/installers/python.sh", diff --git a/images/macos/macos-10.15-Readme.md b/images/macos/macos-10.15-Readme.md index 270392071..aae451696 100644 --- a/images/macos/macos-10.15-Readme.md +++ b/images/macos/macos-10.15-Readme.md @@ -1,5 +1,5 @@ # macOS Catalina 10.15.3 (19D76) -The following software is installed on machines with the 20200217.2 update. +The following software is installed on machines with the 20200224.1 update. #### Xcode 11.3.1 set by default ## Operating System @@ -13,40 +13,41 @@ The following software is installed on machines with the 20200217.2 update. - 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 +- Rust 1.41.1 - Clang/LLVM 9.0.1 - gcc-8 (Homebrew GCC 8.3.0_2) 8.3.0 - gcc-9 (Homebrew GCC 9.2.0_3) 9.2.0 - GNU Fortran (Homebrew GCC 8.3.0_2) 8.3.0 - GNU Fortran (Homebrew GCC 9.2.0_3) 9.2.0 -- Node.js v12.16.0 +- Node.js v12.16.1 - NVM 0.33.11 -- NVM - Cached node versions: v6.17.1 v8.17.0 v10.19.0 v12.16.0 v13.8.0 +- NVM - Cached node versions: v6.17.1 v8.17.0 v10.19.0 v12.16.1 v13.9.0 - PowerShell 6.2.4 - Python 2.7.17 - Python 3.7.6 -- Ruby 2.7.0p0 -- .NET SDK 2.0.0 3.0.100 3.0.101 3.0.102 3.1.100 3.1.101 -- Go 1.13.8 -- PHP 7.4.2 +- Ruby 2.6.5p114 +- .NET SDK 2.0.0 3.0.100 3.0.101 3.0.102 3.0.103 3.1.100 3.1.101 +- Go 1.14 +- PHP 7.4.3 ### Package Management - Rustup 1.21.1 - Bundler version 2.1.4 - Carthage 0.34.0 -- CocoaPods 1.8.4 +- CocoaPods 1.9.0 - Homebrew 2.2.6 - NPM 6.13.4 - Yarn 1.22.0 -- NuGet 5.3.1.6268 +- NuGet 5.4.0.6315 - Pip 19.3.1 (python 2.7) - Pip 19.3.1 (python 3.7) - Miniconda 4.7.12 - RubyGems 3.1.2 +- Vcpkg 2020.02.04 ### Project Management - Apache Maven 3.6.3 -- Gradle 6.2 +- Gradle 6.2.1 ### Utilities - Curl 7.68.0 @@ -54,26 +55,27 @@ The following software is installed on machines with the 20200217.2 update. - Git LFS: 2.10.0 - GNU Wget 1.20.3 - Subversion (SVN) 1.13.0 -- GNU parallel 20200122 +- GNU parallel 20200222 - OpenSSL 1.0.2t 10 Sep 2019 - jq 1.6 - gpg (GnuPG) 2.2.19 -- psql (PostgreSQL) 12.1 +- psql (PostgreSQL) 12.2 - aria2 1.35.0 - azcopy 10.3.4 +- zstd 1.4.4 ### Tools -- Fastlane 2.141.0 +- Fastlane 2.142.0 - Cmake 3.16.4 - App Center CLI 2.3.3 -- Azure CLI 2.0.81 +- Azure CLI 2.1.0 ### Browsers -- Google Chrome 80.0.3987.106 +- Google Chrome 80.0.3987.122 - ChromeDriver 80.0.3987.106 -- Microsoft Edge 80.0.361.54 -- MSEdgeDriver 80.0.361.54 -- Mozilla Firefox 73.0 +- Microsoft Edge 80.0.361.62 +- MSEdgeDriver 80.0.361.62 +- Mozilla Firefox 73.0.1 - geckodriver 0.26.0 ### Toolcache @@ -88,7 +90,7 @@ The following software is installed on machines with the 20200217.2 update. - 3.5.9 - 3.6.10 - 3.7.6 -- 3.8.1 +- 3.8.2 #### PyPy - 2.7.17 @@ -96,20 +98,20 @@ The following software is installed on machines with the 20200217.2 update. ### Xamarin #### Visual Studio for Mac -- 8.4.5.19 +- 8.4.7.17 #### Mono -- 6.6.0.155 +- 6.6.0.166 - 6.4.0.208 #### Xamarin.iOS -- 13.10.0.17 +- 13.10.0.21 - 13.8.3.0 - 13.6.0.12 - 13.4.0.2 #### Xamarin.Mac -- 6.10.0.17 +- 6.10.0.21 - 6.8.3.0 - 6.6.0.12 - 6.4.0.2 @@ -122,15 +124,15 @@ The following software is installed on machines with the 20200217.2 update. - NUnit 3.6.1 ### Xcode -| Version | Build | Path | -| --------------------------------- | --------------------------------- | --------------------------------- | -| 11.4 (beta) | 11N111s | /Applications/Xcode_11.4_beta.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 | -| 11.1 | 11A1027 | /Applications/Xcode_11.1.app | -| 11.0 | 11A420a | /Applications/Xcode_11.app | +| Version | Build | Path | +| ---------------- | ------- | --------------------------------- | +| 11.4 (beta) | 11N123k | /Applications/Xcode_11.4_beta.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 | +| 11.1 | 11A1027 | /Applications/Xcode_11.1.app | +| 11.0 | 11A420a | /Applications/Xcode_11.app | #### Xcode Support Tools - Nomad CLI 3.1.2 @@ -140,46 +142,46 @@ The following software is installed on machines with the 20200217.2 update. - xcversion 2.6.3 #### Installed SDKs -| SDK | SDK Name | Xcode Version | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| macOS 10.15 | macosx10.15 | 11.0, 11.1, 11.2, 11.2.1, 11.3, 11.3.1, 11.4 | -| iOS 13.0 | iphoneos13.0 | 11.0 | -| iOS 13.1 | iphoneos13.1 | 11.1 | -| iOS 13.2 | iphoneos13.2 | 11.2, 11.2.1, 11.3, 11.3.1 | -| iOS 13.4 | iphoneos13.4 | 11.4 | -| Simulator - iOS 13.0 | iphonesimulator13.0 | 11.0 | -| Simulator - iOS 13.1 | iphonesimulator13.1 | 11.1 | -| Simulator - iOS 13.2 | iphonesimulator13.2 | 11.2, 11.2.1, 11.3, 11.3.1 | -| Simulator - iOS 13.4 | iphonesimulator13.4 | 11.4 | -| tvOS 13.0 | appletvos13.0 | 11.0, 11.1 | -| tvOS 13.2 | appletvos13.2 | 11.2, 11.2.1, 11.3, 11.3.1 | -| tvOS 13.4 | appletvos13.4 | 11.4 | -| Simulator - tvOS 13.0 | appletvsimulator13.0 | 11.0, 11.1 | -| Simulator - tvOS 13.2 | appletvsimulator13.2 | 11.2, 11.2.1, 11.3, 11.3.1 | -| Simulator - tvOS 13.4 | appletvsimulator13.4 | 11.4 | -| watchOS 6.0 | watchos6.0 | 11.0, 11.1 | -| watchOS 6.1 | watchos6.1 | 11.2, 11.2.1, 11.3, 11.3.1 | -| watchOS 6.2 | watchos6.2 | 11.4 | -| Simulator - watchOS 6.0 | watchsimulator6.0 | 11.0, 11.1 | -| Simulator - watchOS 6.1 | watchsimulator6.1 | 11.2, 11.2.1, 11.3, 11.3.1 | -| Simulator - watchOS 6.2 | watchsimulator6.2 | 11.4 | -| DriverKit 19.0 | driverkit.macosx19.0 | 11.0, 11.1, 11.2, 11.2.1, 11.3, 11.3.1, 11.4 | +| SDK | SDK Name | Xcode Version | +| ----------------------- | -------------------- | -------------------------------------------- | +| macOS 10.15 | macosx10.15 | 11.0, 11.1, 11.2, 11.2.1, 11.3, 11.3.1, 11.4 | +| iOS 13.0 | iphoneos13.0 | 11.0 | +| iOS 13.1 | iphoneos13.1 | 11.1 | +| iOS 13.2 | iphoneos13.2 | 11.2, 11.2.1, 11.3, 11.3.1 | +| iOS 13.4 | iphoneos13.4 | 11.4 | +| Simulator - iOS 13.0 | iphonesimulator13.0 | 11.0 | +| Simulator - iOS 13.1 | iphonesimulator13.1 | 11.1 | +| Simulator - iOS 13.2 | iphonesimulator13.2 | 11.2, 11.2.1, 11.3, 11.3.1 | +| Simulator - iOS 13.4 | iphonesimulator13.4 | 11.4 | +| tvOS 13.0 | appletvos13.0 | 11.0, 11.1 | +| tvOS 13.2 | appletvos13.2 | 11.2, 11.2.1, 11.3, 11.3.1 | +| tvOS 13.4 | appletvos13.4 | 11.4 | +| Simulator - tvOS 13.0 | appletvsimulator13.0 | 11.0, 11.1 | +| Simulator - tvOS 13.2 | appletvsimulator13.2 | 11.2, 11.2.1, 11.3, 11.3.1 | +| Simulator - tvOS 13.4 | appletvsimulator13.4 | 11.4 | +| watchOS 6.0 | watchos6.0 | 11.0, 11.1 | +| watchOS 6.1 | watchos6.1 | 11.2, 11.2.1, 11.3, 11.3.1 | +| watchOS 6.2 | watchos6.2 | 11.4 | +| Simulator - watchOS 6.0 | watchsimulator6.0 | 11.0, 11.1 | +| Simulator - watchOS 6.1 | watchsimulator6.1 | 11.2, 11.2.1, 11.3, 11.3.1 | +| Simulator - watchOS 6.2 | watchsimulator6.2 | 11.4 | +| DriverKit 19.0 | driverkit.macosx19.0 | 11.0, 11.1, 11.2, 11.2.1, 11.3, 11.3.1, 11.4 | #### Installed Simulators -| OS | Xcode Version | Simulators | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| iOS 13.0 | 11.0 | iPhone 8
iPhone 8 Plus
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro (9.7-inch)
iPad Pro (11-inch)
iPad Pro (12.9-inch) (3rd generation)
iPad Air (3rd generation) | -| iOS 13.1 | 11.1 | iPhone 8
iPhone 8 Plus
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro (9.7-inch)
iPad Pro (11-inch)
iPad Pro (12.9-inch) (3rd generation)
iPad Air (3rd generation) | -| iOS 13.2 | 11.2
11.2.1 | iPhone 8
iPhone 8 Plus
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro (9.7-inch)
iPad Pro (11-inch)
iPad Pro (12.9-inch) (3rd generation)
iPad Air (3rd generation) | -| iOS 13.3 | 11.3
11.3.1 | iPhone 8
iPhone 8 Plus
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro (9.7-inch)
iPad Pro (11-inch)
iPad Pro (12.9-inch) (3rd generation)
iPad Air (3rd generation) | -| iOS 13.4 | 11.4 | iPhone 8
iPhone 8 Plus
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro (9.7-inch)
iPad (7th generation)
iPad Pro (11-inch)
iPad Pro (12.9-inch) (3rd generation)
iPad Air (3rd generation) | -| tvOS 13.0 | 11.0
11.1 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | -| tvOS 13.2 | 11.2
11.2.1 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | -| tvOS 13.3 | 11.3
11.3.1 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | -| tvOS 13.4 | 11.4 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | -| watchOS 6.0 | 11.0
11.1 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm | -| watchOS 6.1 | 11.2
11.2.1
11.3
11.3.1 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm | -| watchOS 6.2 | 11.4 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm | +| OS | Xcode Version | Simulators | +| ----------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| iOS 13.0 | 11.0 | iPhone 8
iPhone 8 Plus
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro (9.7-inch)
iPad Pro (11-inch)
iPad Pro (12.9-inch) (3rd generation)
iPad Air (3rd generation) | +| iOS 13.1 | 11.1 | iPhone 8
iPhone 8 Plus
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro (9.7-inch)
iPad Pro (11-inch)
iPad Pro (12.9-inch) (3rd generation)
iPad Air (3rd generation) | +| iOS 13.2 | 11.2
11.2.1 | iPhone 8
iPhone 8 Plus
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro (9.7-inch)
iPad Pro (11-inch)
iPad Pro (12.9-inch) (3rd generation)
iPad Air (3rd generation) | +| iOS 13.3 | 11.3
11.3.1 | iPhone 8
iPhone 8 Plus
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro (9.7-inch)
iPad (7th generation)
iPad Pro (11-inch)
iPad Pro (12.9-inch) (3rd generation)
iPad Air (3rd generation) | +| iOS 13.4 | 11.4 | iPhone 8
iPhone 8 Plus
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro (9.7-inch)
iPad (7th generation)
iPad Pro (11-inch)
iPad Pro (12.9-inch) (3rd generation)
iPad Air (3rd generation) | +| tvOS 13.0 | 11.0
11.1 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | +| tvOS 13.2 | 11.2
11.2.1 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | +| tvOS 13.3 | 11.3
11.3.1 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | +| tvOS 13.4 | 11.4 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | +| watchOS 6.0 | 11.0
11.1 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm | +| watchOS 6.1 | 11.2
11.2.1
11.3
11.3.1 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm | +| watchOS 6.2 | 11.4 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm | ### Android #### Android SDK Tools @@ -188,70 +190,71 @@ The following software is installed on machines with the 20200217.2 update. | tools | Android SDK Tools, Revision 26.1.1 | #### Android SDK Platform-Tools -| Package Name | Description | -| ------------------------------------------- | ------------------------------------------- | -| platform-tools | Android SDK Platform-Tools, Revision 29.0.5 | +| Package Name | Description | +| -------------- | ------------------------------------------- | +| platform-tools | Android SDK Platform-Tools, Revision 29.0.6 | #### Android SDK Platforms -| Package Name | Description | -| ----------------------------------- | ----------------------------------- | -| android-24 | Android SDK Platform 24, Revision 2 | -| android-25 | Android SDK Platform 25, Revision 3 | -| android-26 | Android SDK Platform 26, Revision 2 | -| android-27 | Android SDK Platform 27, Revision 3 | -| android-28 | Android SDK Platform 28, Revision 6 | -| android-29 | Android SDK Platform 29, Revision 4 | +| Package Name | Description | +| ------------ | ----------------------------------- | +| android-24 | Android SDK Platform 24, Revision 2 | +| android-25 | Android SDK Platform 25, Revision 3 | +| android-26 | Android SDK Platform 26, Revision 2 | +| android-27 | Android SDK Platform 27, Revision 3 | +| android-28 | Android SDK Platform 28, Revision 6 | +| android-29 | Android SDK Platform 29, Revision 4 | #### Android SDK Build-Tools -| Package Name | Description | -| ---------------------------------------- | ---------------------------------------- | -| build-tools-24.0.0 | Android SDK Build-Tools, Revision 24.0.0 | -| build-tools-24.0.1 | Android SDK Build-Tools, Revision 24.0.1 | -| build-tools-24.0.2 | Android SDK Build-Tools, Revision 24.0.2 | -| build-tools-24.0.3 | Android SDK Build-Tools, Revision 24.0.3 | -| build-tools-25.0.0 | Android SDK Build-Tools, Revision 25.0.0 | -| build-tools-25.0.1 | Android SDK Build-Tools, Revision 25.0.1 | -| build-tools-25.0.2 | Android SDK Build-Tools, Revision 25.0.2 | -| build-tools-25.0.3 | Android SDK Build-Tools, Revision 25.0.3 | -| build-tools-26.0.0 | Android SDK Build-Tools, Revision 26.0.0 | -| build-tools-26.0.1 | Android SDK Build-Tools, Revision 26.0.1 | -| build-tools-26.0.2 | Android SDK Build-Tools, Revision 26.0.2 | -| build-tools-26.0.3 | Android SDK Build-Tools, Revision 26.0.3 | -| build-tools-27.0.0 | Android SDK Build-Tools, Revision 27.0.0 | -| build-tools-27.0.1 | Android SDK Build-Tools, Revision 27.0.1 | -| build-tools-27.0.2 | Android SDK Build-Tools, Revision 27.0.2 | -| build-tools-27.0.3 | Android SDK Build-Tools, Revision 27.0.3 | -| build-tools-28.0.0 | Android SDK Build-Tools, Revision 28.0.0 | -| build-tools-28.0.1 | Android SDK Build-Tools, Revision 28.0.1 | -| build-tools-28.0.2 | Android SDK Build-Tools, Revision 28.0.2 | -| build-tools-28.0.3 | Android SDK Build-Tools, Revision 28.0.3 | -| 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 | +| Package Name | Description | +| ---------------------- | -------------------------------------------- | +| build-tools-24.0.0 | Android SDK Build-Tools, Revision 24.0.0 | +| build-tools-24.0.1 | Android SDK Build-Tools, Revision 24.0.1 | +| build-tools-24.0.2 | Android SDK Build-Tools, Revision 24.0.2 | +| build-tools-24.0.3 | Android SDK Build-Tools, Revision 24.0.3 | +| build-tools-25.0.0 | Android SDK Build-Tools, Revision 25.0.0 | +| build-tools-25.0.1 | Android SDK Build-Tools, Revision 25.0.1 | +| build-tools-25.0.2 | Android SDK Build-Tools, Revision 25.0.2 | +| build-tools-25.0.3 | Android SDK Build-Tools, Revision 25.0.3 | +| build-tools-26.0.0 | Android SDK Build-Tools, Revision 26.0.0 | +| build-tools-26.0.1 | Android SDK Build-Tools, Revision 26.0.1 | +| build-tools-26.0.2 | Android SDK Build-Tools, Revision 26.0.2 | +| build-tools-26.0.3 | Android SDK Build-Tools, Revision 26.0.3 | +| build-tools-27.0.0 | Android SDK Build-Tools, Revision 27.0.0 | +| build-tools-27.0.1 | Android SDK Build-Tools, Revision 27.0.1 | +| build-tools-27.0.2 | Android SDK Build-Tools, Revision 27.0.2 | +| build-tools-27.0.3 | Android SDK Build-Tools, Revision 27.0.3 | +| build-tools-28.0.0 | Android SDK Build-Tools, Revision 28.0.0 | +| build-tools-28.0.1 | Android SDK Build-Tools, Revision 28.0.1 | +| build-tools-28.0.2 | Android SDK Build-Tools, Revision 28.0.2 | +| build-tools-28.0.3 | Android SDK Build-Tools, Revision 28.0.3 | +| 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 | +| build-tools-30.0.0-rc1 | Android SDK Build-Tools, Revision 30.0.0 rc1 | #### Android Utils -| Package Name | Version | -| ---------------- | ---------------- | -| cmake | 3.6.4111459 | -| lldb | 3.1.4508709 | -| ndk-bundle | 18.1.5063045 | -| Android Emulator | 29.3.4 | +| Package Name | Version | +| ---------------- | ------------ | +| cmake | 3.6.4111459 | +| lldb | 3.1.4508709 | +| ndk-bundle | 18.1.5063045 | +| Android Emulator | 30.0.0 | #### Android Google APIs -| Package Name | Description | -| --------------------------- | --------------------------- | -| addon-google_apis-google-21 | Google APIs, Revision 1 | -| addon-google_apis-google-22 | Google APIs, Revision 1 | -| addon-google_apis-google-23 | Google APIs, Revision 1 | -| addon-google_apis-google-24 | Google APIs, Revision 1 | +| Package Name | Description | +| --------------------------- | ----------------------- | +| addon-google_apis-google-21 | Google APIs, Revision 1 | +| addon-google_apis-google-22 | Google APIs, Revision 1 | +| addon-google_apis-google-23 | Google APIs, Revision 1 | +| addon-google_apis-google-24 | Google APIs, Revision 1 | #### Extra Packages -| Package Name | Version | -| ----------------------------------------------- | ----------------------------------------------- | -| Android Support Repository | 47.0.0 | -| Google Play services | 49 | -| Google Repository | 58 | -| Intel x86 Emulator Accelerator (HAXM installer) | 7.5.1 | +| Package Name | Version | +| ----------------------------------------------- | ------- | +| Android Support Repository | 47.0.0 | +| Google Play services | 49 | +| Google Repository | 58 | +| Intel x86 Emulator Accelerator (HAXM installer) | 7.5.1 | diff --git a/images/win/Windows2016-Azure.json b/images/win/Windows2016-Azure.json index 60d72a9d3..e24bd75e8 100644 --- a/images/win/Windows2016-Azure.json +++ b/images/win/Windows2016-Azure.json @@ -19,6 +19,7 @@ "root_folder": "C:", "image_folder": "C:\\image", "commit_file": "C:\\image\\commit.txt", + "imagedata_file": "C:\\imagedata.json", "metadata_file": "C:\\image\\metadata.txt", "helper_script_folder": "C:\\Program Files\\WindowsPowerShell\\Modules\\", "commit_url": "LATEST", @@ -120,6 +121,16 @@ "setx ImageOS {{user `image_os` }} /m" ] }, + { + "type": "powershell", + "environment_vars": [ + "IMAGE_VERSION={{user `image_version`}}", + "IMAGEDATA_FILE={{user `imagedata_file`}}" + ], + "scripts":[ + "{{ template_dir }}/scripts/Installers/Update-ImageData.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -277,11 +288,23 @@ "{{ template_dir }}/scripts/Installers/Install-NodeLts.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Install-Bazel.ps1" + ] + }, { "type": "powershell", "scripts":[ "{{ template_dir }}/scripts/Installers/Install-7zip.ps1" ] + }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Install-Packer.ps1" + ] }, { "type": "file", @@ -304,6 +327,12 @@ "{{ template_dir }}/scripts/Installers/Windows2016/Install-Python.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Install-Perl.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -338,6 +367,12 @@ "{{ template_dir }}/scripts/Installers/Install-Rust.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Install-Julia.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -377,7 +412,7 @@ { "type": "powershell", "scripts":[ - "{{ template_dir }}/scripts/Installers/Install-SeleniumWebDrivers.ps1" + "{{ template_dir }}/scripts/Installers/Install-IEWebDriver.ps1" ] }, { @@ -516,12 +551,6 @@ "{{ template_dir }}/scripts/Installers/Install-InnoSetup.ps1" ] }, - { - "type": "powershell", - "scripts":[ - "{{ template_dir }}/scripts/Installers/Install-Perl.ps1" - ] - }, { "type": "powershell", "scripts":[ @@ -607,6 +636,12 @@ "{{ template_dir }}/scripts/Installers/Validate-Python.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Validate-Perl.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -651,6 +686,12 @@ "{{ template_dir }}/scripts/Installers/Validate-Rust.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Validate-Julia.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -693,6 +734,12 @@ "{{ template_dir }}/scripts/Installers/Validate-NodeLts.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Validate-Bazel.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -759,6 +806,12 @@ "{{ template_dir }}/scripts/Installers/Validate-7zip.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Validate-Packer.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -783,12 +836,6 @@ "{{ template_dir }}/scripts/Installers/Validate-InnoSetup.ps1" ] }, - { - "type": "powershell", - "scripts":[ - "{{ template_dir }}/scripts/Installers/Validate-Perl.ps1" - ] - }, { "type": "powershell", "scripts":[ diff --git a/images/win/Windows2016-Readme.md b/images/win/Windows2016-Readme.md index 688cd1de7..a130be1b3 100644 --- a/images/win/Windows2016-Readme.md +++ b/images/win/Windows2016-Readme.md @@ -1,6 +1,6 @@ # Windows Server 2016 -The following software is installed on machines with the 20200217.1 update. +The following software is installed on machines with the 20200301.1 update. Components marked with **\*** have been upgraded since the previous version of the image. @@ -30,9 +30,9 @@ _Version:_ 6.2.4
## Docker images The following container images have been cached: -* mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2016 (Digest: sha256:a1bd1a6dc00f2734b5071b9295f715f36a653e4b2d259c1a4a4d9e8cd6f3ade8) -* mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2016 (Digest: sha256:7e81f462be36ba1362062306426c65547e6d63b2eab0b5583808581081393a79) -* mcr.microsoft.com/windows/servercore:ltsc2016 (Digest: sha256:42be24b8810c861cc1b3fe75c5e99f75061cb45fdbae1de46d151c18cc8e6a9a) +* mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2016 (Digest: sha256:2053602020c89ff2d6c0d4005372ebc6cebcf866fb5785e562d91389aa467943) +* mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2016 (Digest: sha256:ca895ab76f1d3ab95f022cbca076e06b62daebafe61af34212bb3ed1fe982d78) +* mcr.microsoft.com/windows/servercore:ltsc2016 (Digest: sha256:10e43e24be6eb5f3e19e705a88adb9794b569028f0e0d715d40f25e53e04c3fc) * microsoft/aspnetcore-build:1.0-2.0 (Digest: sha256:9ecc7c5a8a7a11dca5f08c860165646cb30d084606360a3a72b9cbe447241c0c) * mcr.microsoft.com/windows/nanoserver:10.0.14393.953 (Digest: sha256:fc60bd5ae0e61b334ce1cf1bcbf20c10c36b4c5482a01da319c9c989f9e6e268) @@ -73,6 +73,8 @@ In addition the following optional components are installed: * Microsoft.Net.Component.4.7.1.SDK * Microsoft.Net.Component.4.7.1.TargetingPack * Microsoft.Net.ComponentGroup.4.7.1.DeveloperTools +* Microsoft.Net.Component.4.7.2.SDK +* Microsoft.Net.Component.4.7.2.TargetingPack * Microsoft.Net.ComponentGroup.4.7.2.DeveloperTools * Microsoft.Net.Core.Component.SDK.1x * Microsoft.NetCore.1x.ComponentGroup.Web @@ -326,7 +328,7 @@ _Location:_ C:\Program Files (x86)\Android\android-sdk\platforms\android-21 _Location:_ C:\Program Files (x86)\Android\android-sdk\platforms\android-19 -## Azure/AzureRM Powershell modules +## AzureRM PowerShell module #### 2.1.0 @@ -334,23 +336,73 @@ This version is installed and is available via `Get-Module -ListAvailable` #### 3.8.0 This version is saved but not installed -_Location:_ C:\Modules\azurerm_3.8.0\AzureRM\3.8.0\AzureRM.psd1 - +_Location:_ C:\Modules\azurerm_3.8.0\AzureRM\3.8.0\AzureRM.psd1 #### 4.2.1 This version is saved but not installed -_Location:_ C:\Modules\azurerm_4.2.1\AzureRM\4.2.1\AzureRM.psd1 - +_Location:_ C:\Modules\azurerm_4.2.1\AzureRM\4.2.1\AzureRM.psd1 #### 5.1.1 This version is saved but not installed -_Location:_ C:\Modules\azurerm_5.1.1\AzureRM\5.1.1\AzureRM.psd1 - +_Location:_ C:\Modules\azurerm_5.1.1\AzureRM\5.1.1\AzureRM.psd1 #### 6.7.0 This version is saved but not installed -_Location:_ C:\Modules\azurerm_6.7.0\AzureRM\6.7.0\AzureRM.psd1 +_Location:_ C:\Modules\azurerm_6.7.0\AzureRM\6.7.0\AzureRM.psd1 +#### 6.13.1 + +This version is saved but not installed +_Location:_ C:\Modules\azurerm_6.13.1\AzureRM\6.13.1\AzureRM.psd1 + +## Azure PowerShell module + +#### 2.1.0 + +This version is installed and is available via `Get-Module -ListAvailable` +#### 3.8.0 + +This version is saved but not installed +_Location:_ C:\Modules\azure_3.8.0\Azure\3.8.0\Azure.psd1 +#### 4.2.1 + +This version is saved but not installed +_Location:_ C:\Modules\azure_4.2.1\Azure\4.2.1\Azure.psd1 +#### 5.1.1 + +This version is saved but not installed +_Location:_ C:\Modules\azure_5.1.1\Azure\5.1.1\Azure.psd1 +#### 5.3.0 + +This version is saved but not installed +_Location:_ C:\Modules\azure_5.3.0\Azure\5.3.0\Azure.psd1 + +## Az PowerShell module + +#### 1.0.0 + +This version is saved but not installed +_Location:_ C:\Modules\az_1.0.0\Az\1.0.0\Az.psd1 +#### 1.6.0 + +This version is saved but not installed +_Location:_ C:\Modules\az_1.6.0\Az\1.6.0\Az.psd1 +#### 2.3.2 + +This version is saved but not installed +_Location:_ C:\Modules\az_2.3.2\Az\2.3.2\Az.psd1 +#### 2.6.0 + +This version is saved but not installed +_Location:_ C:\Modules\az_2.6.0\Az\2.6.0\Az.psd1 +#### 3.1.0 + +This version is saved but not installed +_Location:_ C:\Modules\az_3.1.0\Az\3.1.0\Az.psd1 +#### 3.5.0 + +This version is saved but not installed +_Location:_ C:\Modules\az_3.5.0\Az\3.5.0\Az.psd1 ## TLS12 @@ -359,7 +411,7 @@ _Description:_ .NET has been configured to use TLS 1.2 by default ## Azure CLI -_Version:_ 2.0.81 +_Version:_ 2.1.0 _Environment:_ * PATH: contains location of az.cmd @@ -369,7 +421,7 @@ _Version:_ azure-devops 0.17.0 ## Python -_Version:_ 2.7.17 (x64)
_Version:_ 3.5.4 (x64)
_Version:_ 3.6.8 (x64)
_Version:_ 3.7.6 (x64)
_Version:_ 3.8.1 (x64)
_Version:_ 2.7.17 (x86)
_Version:_ 3.5.4 (x86)
_Version:_ 3.6.8 (x86)
_Version:_ 3.7.6 (x86)
_Version:_ 3.8.1 (x86)
+_Version:_ 2.7.17 (x64)
_Version:_ 3.5.4 (x64)
_Version:_ 3.6.8 (x64)
_Version:_ 3.7.6 (x64)
_Version:_ 3.8.2 (x64)
_Version:_ 2.7.17 (x86)
_Version:_ 3.5.4 (x86)
_Version:_ 3.6.8 (x86)
_Version:_ 3.7.6 (x86)
_Version:_ 3.8.2 (x86)
## PyPy @@ -391,13 +443,13 @@ _Location:_ C:/hostedtoolcache/windows/Python/2.7*/x64 ## Git -_Version:_ 2.25.0
+_Version:_ 2.25.1
_Environment:_ * PATH: contains location of git.exe ## Git Large File Storage (LFS) -_Version:_ 2.9.2
+_Version:_ 2.10.0
_Environment:_ * PATH: contains location of git-lfs.exe * GIT_LFS_PATH: location of git-lfs.exe @@ -448,11 +500,11 @@ _Environment:_ ## PHP (x64) -#### 7.4.2 +#### 7.4.3 _Environment:_ -* PATH: contains the location of php.exe version 7.4.2 -* PHPROOT: root directory of the PHP 7.4.2 installation +* PATH: contains the location of php.exe version 7.4.3 +* PHPROOT: root directory of the PHP 7.4.3 installation ## Ruby (x64) @@ -464,7 +516,7 @@ _Environment:_ ## Rust (64-bit) -#### 1.41.0 +#### 1.41.1 _Location:_ C:\Rust\.cargo\bin _Environment:_ * PATH: contains the location of rustc.exe @@ -482,17 +534,17 @@ _Environment:_ ## Google Chrome _version:_ -80.0.3987.106 +80.0.3987.122 ## Microsoft Edge _version:_ -80.0.361.54 +80.0.361.62 ## Mozilla Firefox _version:_ -72.0.1 +73.0.1 ## Selenium Web Drivers @@ -508,7 +560,7 @@ _Environment:_ #### Gecko Driver _version:_ -0.24.0 + _Environment:_ * GeckoWebDriver: location of geckodriver.exe @@ -532,7 +584,7 @@ _Environment:_ ## Node.js -_Version:_ 12.16.0
+_Version:_ 12.16.1
_Architecture:_ x64
_Environment:_ * PATH: contains location of node.exe
@@ -573,26 +625,27 @@ _Environment:_ ## Maven -_Version:_ 3.6.2
+_Version:_ 3.6.3
_Environment:_ * PATH: contains location of mvn.bat * M2_HOME: Maven installation root ## Gradle -_Version:_ 6.0.1
+_Version:_ 6.2.1
_Environment:_ * PATH: contains location of gradle ## Cmake -_Version:_ 3.16.2
+_Version:_ 3.16.4
_Environment:_ * PATH: contains location of cmake.exe ## SQL Server Data Tier Application Framework (x64) -_Version:_ 15.0.4538.1
+_Version:_ 15.0.4538.1
+* SQL Server Express LocalDB is available at C:\Program Files\Microsoft SQL Server\130\Tools\Binn\SqlLocalDB.exe ## .NET Core @@ -604,6 +657,7 @@ _Environment:_ _SDK:_ * 3.1.101 C:\Program Files\dotnet\sdk\3.1.101 * 3.1.100 C:\Program Files\dotnet\sdk\3.1.100 +* 3.0.103 C:\Program Files\dotnet\sdk\3.0.103 * 3.0.102 C:\Program Files\dotnet\sdk\3.0.102 * 3.0.101 C:\Program Files\dotnet\sdk\3.0.101 * 3.0.100 C:\Program Files\dotnet\sdk\3.0.100 @@ -628,11 +682,13 @@ _SDK:_ * 2.2.102 C:\Program Files\dotnet\sdk\2.2.102 * 2.2.101 C:\Program Files\dotnet\sdk\2.2.101 * 2.2.100 C:\Program Files\dotnet\sdk\2.2.100 +* 2.1.804 C:\Program Files\dotnet\sdk\2.1.804 * 2.1.803 C:\Program Files\dotnet\sdk\2.1.803 * 2.1.802 C:\Program Files\dotnet\sdk\2.1.802 * 2.1.801 C:\Program Files\dotnet\sdk\2.1.801 * 2.1.701 C:\Program Files\dotnet\sdk\2.1.701 * 2.1.700 C:\Program Files\dotnet\sdk\2.1.700 +* 2.1.609 C:\Program Files\dotnet\sdk\2.1.609 * 2.1.608 C:\Program Files\dotnet\sdk\2.1.608 * 2.1.607 C:\Program Files\dotnet\sdk\2.1.607 * 2.1.606 C:\Program Files\dotnet\sdk\2.1.606 @@ -640,6 +696,7 @@ _SDK:_ * 2.1.604 C:\Program Files\dotnet\sdk\2.1.604 * 2.1.603 C:\Program Files\dotnet\sdk\2.1.603 * 2.1.602 C:\Program Files\dotnet\sdk\2.1.602 +* 2.1.512 C:\Program Files\dotnet\sdk\2.1.512 * 2.1.511 C:\Program Files\dotnet\sdk\2.1.511 * 2.1.510 C:\Program Files\dotnet\sdk\2.1.510 * 2.1.509 C:\Program Files\dotnet\sdk\2.1.509 @@ -663,6 +720,7 @@ _SDK:_ _Runtime:_ * 3.1.1 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.1 * 3.1.0 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.0 +* 3.0.3 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.0.3 * 3.0.2 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.0.2 * 3.0.1 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.0.1 * 3.0.0 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.0.0 @@ -683,6 +741,7 @@ _Runtime:_ * 2.1.4 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.4 * 2.1.3 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.3 * 2.1.2 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.2 +* 2.1.16 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.16 * 2.1.15 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.15 * 2.1.14 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.14 * 2.1.13 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.13 @@ -717,7 +776,7 @@ _Environment:_ ## TypeScript -_Version:_ Version 3.7.5
+_Version:_ Version 3.8.3
## Miniconda @@ -727,7 +786,7 @@ _Environment:_ ## Azure CosmosDb Emulator -_Version:_ 2.9.1.0
+_Version:_ 2.9.2.0
_Location:_ C:\Program Files\Azure Cosmos DB Emulator\ ## 7zip @@ -742,6 +801,10 @@ _Version:_
_Version:_ jq-1.6
+## zstd + +_Version:_ v1.4.0
+ ## Inno Setup _Version:_ 6.0.3
@@ -780,3 +843,7 @@ _Environment:_ _Version:_ kind v0.7.0 go1.13.6 windows/amd64
_Environment:_ * PATH: contains location of kind.exe + +## bazel + +_Version:_ bazel 2.1.0
diff --git a/images/win/Windows2019-Azure.json b/images/win/Windows2019-Azure.json index 15ed7cb83..668451eb5 100644 --- a/images/win/Windows2019-Azure.json +++ b/images/win/Windows2019-Azure.json @@ -19,6 +19,7 @@ "root_folder": "C:", "image_folder": "C:\\image", "commit_file": "C:\\image\\commit.txt", + "imagedata_file": "C:\\imagedata.json", "metadata_file": "C:\\image\\metadata.txt", "helper_script_folder": "C:\\Program Files\\WindowsPowerShell\\Modules\\", "commit_id": "LATEST", @@ -120,6 +121,16 @@ "setx ImageOS {{user `image_os` }} /m" ] }, + { + "type": "powershell", + "environment_vars": [ + "IMAGE_VERSION={{user `image_version`}}", + "IMAGEDATA_FILE={{user `imagedata_file`}}" + ], + "scripts":[ + "{{ template_dir }}/scripts/Installers/Update-ImageData.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -172,6 +183,12 @@ "{{ template_dir }}/scripts/Installers/Windows2019/Install-Wix.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Windows2019/Install-AnalysisExtenstion.ps1" + ] + }, { "type": "powershell", "valid_exit_codes": [ @@ -204,6 +221,12 @@ "{{ template_dir }}/scripts/Installers/Windows2019/Validate-Wix.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Windows2019/Validate-AnalysisExtenstion.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -252,6 +275,12 @@ "{{ template_dir }}/scripts/Installers/Install-7zip.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Install-Packer.ps1" + ] + }, { "type": "file", "source": "{{template_dir}}/toolcache-2019.json", @@ -273,6 +302,12 @@ "{{ template_dir }}/scripts/Installers/Windows2019/Install-Python.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Install-Perl.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -307,6 +342,12 @@ "{{ template_dir }}/scripts/Installers/Install-Rust.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Install-Julia.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -346,7 +387,7 @@ { "type": "powershell", "scripts":[ - "{{ template_dir }}/scripts/Installers/Install-SeleniumWebDrivers.ps1" + "{{ template_dir }}/scripts/Installers/Install-IEWebDriver.ps1" ] }, { @@ -482,13 +523,13 @@ { "type": "powershell", "scripts":[ - "{{ template_dir }}/scripts/Installers/Install-InnoSetup.ps1" + "{{ template_dir }}/scripts/Installers/Install-Zstd.ps1" ] }, { "type": "powershell", "scripts":[ - "{{ template_dir }}/scripts/Installers/Install-Perl.ps1" + "{{ template_dir }}/scripts/Installers/Install-InnoSetup.ps1" ] }, { @@ -533,6 +574,12 @@ "{{ template_dir }}/scripts/Installers/Install-Kind.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Install-Bazel.ps1" + ] + }, { "type": "windows-restart", "restart_timeout": "10m" @@ -576,6 +623,12 @@ "{{ template_dir }}/scripts/Installers/Validate-Python.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Validate-Perl.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -620,6 +673,12 @@ "{{ template_dir }}/scripts/Installers/Validate-Rust.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Validate-Julia.ps1" + ] + }, { "type": "powershell", "scripts":[ @@ -727,6 +786,12 @@ "scripts":[ "{{ template_dir }}/scripts/Installers/Validate-7zip.ps1" ] + }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Validate-Packer.ps1" + ] }, { "type": "powershell", @@ -743,13 +808,13 @@ { "type": "powershell", "scripts":[ - "{{ template_dir }}/scripts/Installers/Validate-InnoSetup.ps1" + "{{ template_dir }}/scripts/Installers/Validate-Zstd.ps1" ] }, { "type": "powershell", "scripts":[ - "{{ template_dir }}/scripts/Installers/Validate-Perl.ps1" + "{{ template_dir }}/scripts/Installers/Validate-InnoSetup.ps1" ] }, { @@ -800,6 +865,12 @@ "{{ template_dir }}/scripts/Installers/Validate-Kind.ps1" ] }, + { + "type": "powershell", + "scripts":[ + "{{ template_dir }}/scripts/Installers/Validate-Bazel.ps1" + ] + }, { "type": "file", "source": "C:\\InstalledSoftware.md", diff --git a/images/win/Windows2019-Readme.md b/images/win/Windows2019-Readme.md index b70b415d4..7eab9d90e 100644 --- a/images/win/Windows2019-Readme.md +++ b/images/win/Windows2019-Readme.md @@ -1,6 +1,6 @@ # Windows Server 2019 -The following software is installed on machines with the 20200212.1 update. +The following software is installed on machines with the 20200301.1 update. Components marked with **\*** have been upgraded since the previous version of the image. @@ -19,7 +19,7 @@ _Environment:_ ## Docker-compose -_Version:_ 1.25.3
+_Version:_ 1.25.4
_Environment:_ * PATH: contains location of docker-compose.exe @@ -30,10 +30,10 @@ _Version:_ 6.2.4
## Docker images The following container images have been cached: -* mcr.microsoft.com/windows/servercore:ltsc2019 (Digest: sha256:7437a0cac8abeb7b540ef249e6c9b5da6e3e218579b187e8a5d4528919497eba) -* mcr.microsoft.com/windows/nanoserver:1809 (Digest: sha256:05c753fb084d83f9742727a301f19bcbb2912b9a58f3ca659ba4c9d3e9b9fec2) -* mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019 (Digest: sha256:fb04ac71d809a06bd695d7647cff47a1c5ceb2e2b11c1ed7dd32283158522e36) -* mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 (Digest: sha256:85433707a809232402827a359c80d0aa08226e7833aa2914be2113e694d2b6ae) +* mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019 (Digest: sha256:746e54a4398bff0ad516d02fdb9eec5cba1a3b5ba0c15a82c051fc3dc753fe85) +* mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 (Digest: sha256:708a9492c51140a07a0bd160c508dd6d17f3b061af0a3f53de607d671ee7176a) +* mcr.microsoft.com/windows/servercore:ltsc2019 (Digest: sha256:39ba615d7a739fcdd9fc95b97882672d5af7d0861dd16b51b238c822765d2b8d) +* mcr.microsoft.com/windows/nanoserver:1809 (Digest: sha256:4201fb07c1ece2ef0bad7b518fd487d030cd49de98b81b3ed8b98e71432df463) * microsoft/aspnetcore-build:1.0-2.0 (Digest: sha256:9ecc7c5a8a7a11dca5f08c860165646cb30d084606360a3a72b9cbe447241c0c) ## Visual Studio 2019 Enterprise @@ -54,6 +54,9 @@ The following workloads and components are installed with Visual Studio 2019: * Microsoft.Component.VC.Runtime.UCRTSDK * Microsoft.Net.ComponentGroup.4.6.2.DeveloperTools * Microsoft.Net.ComponentGroup.4.7.1.DeveloperTools +* Microsoft.Net.Component.4.7.2.SDK +* Microsoft.Net.Component.4.7.2.TargetingPack +* Microsoft.Net.ComponentGroup.4.7.2.DeveloperTools * Microsoft.Net.ComponentGroup.4.7.DeveloperTools * Microsoft.VisualStudio.Component.AspNet45 * Microsoft.VisualStudio.Component.Azure.Kubernetes.Tools @@ -131,7 +134,8 @@ _Path:_ C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools ## Windows Driver Kit -_Version:_ 10.0.18362.0
+_WDK Version:_ 10.1.18362.1
+_WDK Visual Studio Extension Version:_ 10.0.18346.0
## Azure Service Fabric @@ -304,7 +308,7 @@ _Location:_ C:\Program Files (x86)\Android\android-sdk\platforms\android-21 _Location:_ C:\Program Files (x86)\Android\android-sdk\platforms\android-19 -## Azure/AzureRM Powershell modules +## AzureRM PowerShell module #### 2.1.0 @@ -312,23 +316,73 @@ This version is installed and is available via `Get-Module -ListAvailable` #### 3.8.0 This version is saved but not installed -_Location:_ C:\Modules\azurerm_3.8.0\AzureRM\3.8.0\AzureRM.psd1 - +_Location:_ C:\Modules\azurerm_3.8.0\AzureRM\3.8.0\AzureRM.psd1 #### 4.2.1 This version is saved but not installed -_Location:_ C:\Modules\azurerm_4.2.1\AzureRM\4.2.1\AzureRM.psd1 - +_Location:_ C:\Modules\azurerm_4.2.1\AzureRM\4.2.1\AzureRM.psd1 #### 5.1.1 This version is saved but not installed -_Location:_ C:\Modules\azurerm_5.1.1\AzureRM\5.1.1\AzureRM.psd1 - +_Location:_ C:\Modules\azurerm_5.1.1\AzureRM\5.1.1\AzureRM.psd1 #### 6.7.0 This version is saved but not installed -_Location:_ C:\Modules\azurerm_6.7.0\AzureRM\6.7.0\AzureRM.psd1 +_Location:_ C:\Modules\azurerm_6.7.0\AzureRM\6.7.0\AzureRM.psd1 +#### 6.13.1 + +This version is saved but not installed +_Location:_ C:\Modules\azurerm_6.13.1\AzureRM\6.13.1\AzureRM.psd1 + +## Azure PowerShell module + +#### 2.1.0 + +This version is installed and is available via `Get-Module -ListAvailable` +#### 3.8.0 + +This version is saved but not installed +_Location:_ C:\Modules\azure_3.8.0\Azure\3.8.0\Azure.psd1 +#### 4.2.1 + +This version is saved but not installed +_Location:_ C:\Modules\azure_4.2.1\Azure\4.2.1\Azure.psd1 +#### 5.1.1 + +This version is saved but not installed +_Location:_ C:\Modules\azure_5.1.1\Azure\5.1.1\Azure.psd1 +#### 5.3.0 + +This version is saved but not installed +_Location:_ C:\Modules\azure_5.3.0\Azure\5.3.0\Azure.psd1 + +## Az PowerShell module + +#### 1.0.0 + +This version is saved but not installed +_Location:_ C:\Modules\az_1.0.0\Az\1.0.0\Az.psd1 +#### 1.6.0 + +This version is saved but not installed +_Location:_ C:\Modules\az_1.6.0\Az\1.6.0\Az.psd1 +#### 2.3.2 + +This version is saved but not installed +_Location:_ C:\Modules\az_2.3.2\Az\2.3.2\Az.psd1 +#### 2.6.0 + +This version is saved but not installed +_Location:_ C:\Modules\az_2.6.0\Az\2.6.0\Az.psd1 +#### 3.1.0 + +This version is saved but not installed +_Location:_ C:\Modules\az_3.1.0\Az\3.1.0\Az.psd1 +#### 3.5.0 + +This version is saved but not installed +_Location:_ C:\Modules\az_3.5.0\Az\3.5.0\Az.psd1 ## TLS12 @@ -337,7 +391,7 @@ _Description:_ .NET has been configured to use TLS 1.2 by default ## Azure CLI -_Version:_ 2.0.81 +_Version:_ 2.1.0 _Environment:_ * PATH: contains location of az.cmd @@ -347,7 +401,7 @@ _Version:_ azure-devops 0.17.0 ## Python -_Version:_ 2.7.17 (x64)
_Version:_ 3.5.4 (x64)
_Version:_ 3.6.8 (x64)
_Version:_ 3.7.6 (x64)
_Version:_ 3.8.1 (x64)
_Version:_ 2.7.17 (x86)
_Version:_ 3.5.4 (x86)
_Version:_ 3.6.8 (x86)
_Version:_ 3.7.6 (x86)
_Version:_ 3.8.1 (x86)
+_Version:_ 2.7.17 (x64)
_Version:_ 3.5.4 (x64)
_Version:_ 3.6.8 (x64)
_Version:_ 3.7.6 (x64)
_Version:_ 3.8.2 (x64)
_Version:_ 2.7.17 (x86)
_Version:_ 3.5.4 (x86)
_Version:_ 3.6.8 (x86)
_Version:_ 3.7.6 (x86)
_Version:_ 3.8.2 (x86)
## PyPy @@ -369,13 +423,13 @@ _Location:_ C:/hostedtoolcache/windows/Python/2.7*/x64 ## Git -_Version:_ 2.25.0
+_Version:_ 2.25.1
_Environment:_ * PATH: contains location of git.exe ## Git Large File Storage (LFS) -_Version:_ 2.9.2
+_Version:_ 2.10.0
_Environment:_ * PATH: contains location of git-lfs.exe * GIT_LFS_PATH: location of git-lfs.exe @@ -421,11 +475,11 @@ _Environment:_ ## PHP (x64) -#### 7.4.2 +#### 7.4.3 _Environment:_ -* PATH: contains the location of php.exe version 7.4.2 -* PHPROOT: root directory of the PHP 7.4.2 installation +* PATH: contains the location of php.exe version 7.4.3 +* PHPROOT: root directory of the PHP 7.4.3 installation ## Ruby (x64) @@ -437,7 +491,7 @@ _Environment:_ ## Rust (64-bit) -#### 1.41.0 +#### 1.41.1 _Location:_ C:\Rust\.cargo\bin _Environment:_ * PATH: contains the location of rustc.exe @@ -455,17 +509,17 @@ _Environment:_ ## Google Chrome _version:_ -80.0.3987.100 +80.0.3987.122 ## Microsoft Edge _version:_ -80.0.361.50 +80.0.361.62 ## Mozilla Firefox _version:_ -72.0.1 +73.0.1 ## Selenium Web Drivers @@ -481,7 +535,7 @@ _Environment:_ #### Gecko Driver _version:_ -0.24.0 + _Environment:_ * GeckoWebDriver: location of geckodriver.exe @@ -489,7 +543,7 @@ _Environment:_ #### IE Driver _version:_ -80.0.3987.16 +80.0.3987.106 _Environment:_ * IEWebDriver: location of IEDriverServer.exe @@ -505,7 +559,7 @@ _Environment:_ ## Node.js -_Version:_ 12.16.0
+_Version:_ 12.16.1
_Architecture:_ x64
_Environment:_ * PATH: contains location of node.exe
@@ -546,26 +600,27 @@ _Environment:_ ## Maven -_Version:_ 3.6.2
+_Version:_ 3.6.3
_Environment:_ * PATH: contains location of mvn.bat * M2_HOME: Maven installation root ## Gradle -_Version:_ 6.0.1
+_Version:_ 6.2.1
_Environment:_ * PATH: contains location of gradle ## Cmake -_Version:_ 3.16.2
+_Version:_ 3.16.4
_Environment:_ * PATH: contains location of cmake.exe ## SQL Server Data Tier Application Framework (x64) -_Version:_ 15.0.4538.1
+_Version:_ 15.0.4538.1
+* SQL Server Express LocalDB is available at C:\Program Files\Microsoft SQL Server\130\Tools\Binn\SqlLocalDB.exe ## .NET Core @@ -577,6 +632,7 @@ _Environment:_ _SDK:_ * 3.1.101 C:\Program Files\dotnet\sdk\3.1.101 * 3.1.100 C:\Program Files\dotnet\sdk\3.1.100 +* 3.0.103 C:\Program Files\dotnet\sdk\3.0.103 * 3.0.102 C:\Program Files\dotnet\sdk\3.0.102 * 3.0.101 C:\Program Files\dotnet\sdk\3.0.101 * 3.0.100 C:\Program Files\dotnet\sdk\3.0.100 @@ -601,11 +657,13 @@ _SDK:_ * 2.2.102 C:\Program Files\dotnet\sdk\2.2.102 * 2.2.101 C:\Program Files\dotnet\sdk\2.2.101 * 2.2.100 C:\Program Files\dotnet\sdk\2.2.100 +* 2.1.804 C:\Program Files\dotnet\sdk\2.1.804 * 2.1.803 C:\Program Files\dotnet\sdk\2.1.803 * 2.1.802 C:\Program Files\dotnet\sdk\2.1.802 * 2.1.801 C:\Program Files\dotnet\sdk\2.1.801 * 2.1.701 C:\Program Files\dotnet\sdk\2.1.701 * 2.1.700 C:\Program Files\dotnet\sdk\2.1.700 +* 2.1.609 C:\Program Files\dotnet\sdk\2.1.609 * 2.1.608 C:\Program Files\dotnet\sdk\2.1.608 * 2.1.607 C:\Program Files\dotnet\sdk\2.1.607 * 2.1.606 C:\Program Files\dotnet\sdk\2.1.606 @@ -613,6 +671,7 @@ _SDK:_ * 2.1.604 C:\Program Files\dotnet\sdk\2.1.604 * 2.1.603 C:\Program Files\dotnet\sdk\2.1.603 * 2.1.602 C:\Program Files\dotnet\sdk\2.1.602 +* 2.1.512 C:\Program Files\dotnet\sdk\2.1.512 * 2.1.511 C:\Program Files\dotnet\sdk\2.1.511 * 2.1.510 C:\Program Files\dotnet\sdk\2.1.510 * 2.1.509 C:\Program Files\dotnet\sdk\2.1.509 @@ -634,6 +693,7 @@ _SDK:_ _Runtime:_ * 3.1.1 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.1 * 3.1.0 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.0 +* 3.0.3 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.0.3 * 3.0.2 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.0.2 * 3.0.1 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.0.1 * 3.0.0 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.0.0 @@ -654,6 +714,7 @@ _Runtime:_ * 2.1.4 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.4 * 2.1.3 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.3 * 2.1.2 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.2 +* 2.1.16 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.16 * 2.1.15 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.15 * 2.1.14 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.14 * 2.1.13 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.13 @@ -685,7 +746,7 @@ _Environment:_ ## TypeScript -_Version:_ Version 3.7.5
+_Version:_ Version 3.8.3
## Miniconda @@ -695,7 +756,7 @@ _Environment:_ ## Azure CosmosDb Emulator -_Version:_ 2.9.1.0
+_Version:_ 2.9.2.0
_Location:_ C:\Program Files\Azure Cosmos DB Emulator\ ## 7zip @@ -739,7 +800,7 @@ _Environment:_ ## VSWhere -_Version_: Visual Studio Locator version 2.8.4+ff0de50053 [query version 2.3.2200.14893] Copyright (C) Microsoft Corporation. All rights reserved. instanceId: c902162b installDate: 2/12/2020 11:02:21 PM installationName: VisualStudio/16.4.5+29806.167 installationPath: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise installationVersion: 16.4.29806.167 productId: Microsoft.VisualStudio.Product.Enterprise productPath: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\devenv.exe state: 4294967295 isComplete: 1 isLaunchable: 1 isPrerelease: 0 isRebootRequired: 0 displayName: Visual Studio Enterprise 2019 description: Scalable, end-to-end solution for teams of any size channelId: VisualStudio.16.Release channelUri: https://aka.ms/vs/16/release/channel enginePath: C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\ServiceHub\Services\Microsoft.VisualStudio.Setup.Service releaseNotes: https://go.microsoft.com/fwlink/?LinkId=660893#16.4.5 thirdPartyNotices: https://go.microsoft.com/fwlink/?LinkId=660909 updateDate: 2020-02-12T23:02:21.9476668Z catalog_buildBranch: d16.4 catalog_buildVersion: 16.4.29806.167 catalog_id: VisualStudio/16.4.5+29806.167 catalog_localBuild: build-lab catalog_manifestName: VisualStudio catalog_manifestType: installer catalog_productDisplayVersion: 16.4.5 catalog_productLine: Dev16 catalog_productLineVersion: 2019 catalog_productMilestone: RTW catalog_productMilestoneIsPreRelease: False catalog_productName: Visual Studio catalog_productPatchVersion: 5 catalog_productPreReleaseMilestoneSuffix: 1.0 catalog_productSemanticVersion: 16.4.5+29806.167 catalog_requiredEngineVersion: 2.4.1111.43337 properties_campaignId: properties_channelManifestId: VisualStudio.16.Release/16.4.5+29806.167 properties_nickname: properties_setupEngineFilePath: C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installershell.exe
+_Version_: Visual Studio Locator version 2.8.4+ff0de50053 [query version 2.3.2200.14893] Copyright (C) Microsoft Corporation. All rights reserved. instanceId: 34bc4745 installDate: 3/1/2020 6:49:00 AM installationName: VisualStudio/16.4.5+29806.167 installationPath: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise installationVersion: 16.4.29806.167 productId: Microsoft.VisualStudio.Product.Enterprise productPath: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\devenv.exe state: 4294967295 isComplete: 1 isLaunchable: 1 isPrerelease: 0 isRebootRequired: 0 displayName: Visual Studio Enterprise 2019 description: Scalable, end-to-end solution for teams of any size channelId: VisualStudio.16.Release channelUri: https://aka.ms/vs/16/release/channel enginePath: C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\ServiceHub\Services\Microsoft.VisualStudio.Setup.Service releaseNotes: https://go.microsoft.com/fwlink/?LinkId=660893#16.4.5 thirdPartyNotices: https://go.microsoft.com/fwlink/?LinkId=660909 updateDate: 2020-03-01T06:49:00.926083Z catalog_buildBranch: d16.4 catalog_buildVersion: 16.4.29806.167 catalog_id: VisualStudio/16.4.5+29806.167 catalog_localBuild: build-lab catalog_manifestName: VisualStudio catalog_manifestType: installer catalog_productDisplayVersion: 16.4.5 catalog_productLine: Dev16 catalog_productLineVersion: 2019 catalog_productMilestone: RTW catalog_productMilestoneIsPreRelease: False catalog_productName: Visual Studio catalog_productPatchVersion: 5 catalog_productPreReleaseMilestoneSuffix: 1.0 catalog_productSemanticVersion: 16.4.5+29806.167 catalog_requiredEngineVersion: 2.4.1111.43337 properties_campaignId: properties_channelManifestId: VisualStudio.16.Release/16.4.5+29806.167 properties_nickname: properties_setupEngineFilePath: C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installershell.exe
* PATH: contains location of vswhere.exe ## Kubectl @@ -753,3 +814,7 @@ _Environment:_ _Version:_ kind v0.7.0 go1.13.6 windows/amd64
_Environment:_ * PATH: contains location of kind.exe + +## bazel + +_Version:_ bazel 2.1.0
diff --git a/images/win/scripts/Installers/Install-AzureModules.ps1 b/images/win/scripts/Installers/Install-AzureModules.ps1 index 0721e6e9a..5a67584a1 100644 --- a/images/win/scripts/Installers/Install-AzureModules.ps1 +++ b/images/win/scripts/Installers/Install-AzureModules.ps1 @@ -3,195 +3,66 @@ ## Desc: Install Azure PowerShell modules ################################################################################ -Add-Type -AssemblyName System.IO.Compression.FileSystem - -function Download-Zip -{ - [CmdletBinding()] - Param( - [Parameter( - Mandatory = $true - )] - [string] - $BlobUri - ) - - Write-Host "Downloading the zip from blob: '$BlobUri'" - $fileName = "azureps_" + "$(Get-Random)" + ".zip" - $targetLocation = Join-Path $ENV:Temp -ChildPath $fileName - Write-Host "Download target location: '$targetLocation'" - $webClient = New-Object Net.WebClient - $null = $webClient.DownloadFileAsync($BlobUri, $targetLocation) - while ($webClient.IsBusy) { } - Write-Host "Download complete. Target Location: '$targetLocation'" - return $targetLocation -} - -function Extract-Zip -{ - [CmdletBinding()] - Param( - [Parameter( - Mandatory = $true - )] - [string] - $ZipFilePath, - - [Parameter( - Mandatory = $true - )] - [string] - $TargetLocation - ) - - Write-Host "Expanding the Zip File: '$ZipFilePath'. Target: '$TargetLocation'" - $null = [System.IO.Compression.ZipFile]::ExtractToDirectory($ZipFilePath, $TargetLocation) - Write-Host "Extraction completed successfully." -} - Set-PSRepository -InstallationPolicy Trusted -Name PSGallery -# We try to detect the whether Azure PowerShell is installed using .msi file. If it is installed, we find it's version, then it needs to be uninstalled manually (because the uninstallation requires the PowerShell session to be closed) -$regKey = "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" -$installedApplications = Get-ItemProperty -Path $regKey -$SdkVersion = ($installedApplications | Where-Object { $_.DisplayName -and $_.DisplayName.toLower().Contains("microsoft azure powershell") } | Select-Object -First 1).DisplayVersion - -if($SdkVersion -eq $null) -{ - Write-Host "No .msi Installation Present" -} -else -{ - Write-Host "An Azure PowerShell Installation through installer has been detected. Please close this powershell session and manually uninstall the Azure PowerShell from the Add or Remove Programs in the Control Panel. Then, rerun this script from an Admin PowerShell" - throw "An Azure PowerShell Installation through installer has been detected. Please close this powershell session and manually uninstall the Azure PowerShell from the Add or Remove Programs in the Control Panel. Then, rerun this script from an Admin PowerShell" -} - -# We will try to uninstall any installation of Azure PowerShell - -$modules = Get-Module -Name Azure -ListAvailable -Write-Host "The Azure Modules initially present are:" -$modules | Select-Object Name,Version,Path | Format-Table - -foreach($module in $modules) -{ - # add logging for telling what module we are working on now - if(Test-Path -LiteralPath $module.Path) - { - try - { - Uninstall-Module -Name Azure -RequiredVersion $module.Version.tostring() -Force - } - catch - { - Write-Host "The Uninstallation of Azure Module version: $($module.Version.tostring()) failed with the error: $($_.Exception.Message) . Please Check if there isn't any other PowerShell session open." - throw $_.Exception.Message - } - } -} - -$modules = Get-Module -Name AzureRM -ListAvailable -Write-Host "The AzureRM Modules initially present are:" -$modules | Select-Object Name,Version,Path | Format-Table - -foreach($module in $modules) -{ - # add logging for telling what module we are working on now - if(Test-Path -LiteralPath $module.Path) - { - try - { - Uninstall-Module -Name AzureRM -RequiredVersion $module.Version.tostring() -Force - } - catch - { - Write-Host "The Uninstallation of AzureRM Module version: $($module.Version.tostring()) failed with the error: $($_.Exception.Message) . Please Check if there isn't any other PowerShell session open." - throw $_.Exception.Message - } - } -} - -#after this, the only installations available through a Get-Module cmdlet should be nothing - -$modules = Get-Module -Name Azure -ListAvailable - -foreach($module in $modules) -{ - Write-Host "Module found: $($module.Name) Module Version: $($module.Version)" - if($module.Version.ToString() -ne " ") - { - Write-Host "Another installation of Azure module is detected with version $($module.Version.ToString()) at path: $($module.Path)" - throw "Azure module uninstallation unsuccessful" - } -} - -$modules = Get-Module -Name AzureRM -ListAvailable - -foreach($module in $modules) -{ - write-host "Module found: $($module.Name) Module Version: $($module.Version)" - if($module.Version.ToString() -ne " ") - { - Write-Host "Another installation of AzureRM module is detected with version $($module.Version.ToString()) at path: $($module.Path)" - throw "AzureRM module uninstallation unsuccessful" - } -} - #### NOW The correct Modules need to be saved in C:\Modules - -if($(Test-Path -LiteralPath "C:\Modules") -eq $true) +$installPSModulePath = 'C:\Modules' +if(-not (Test-Path -LiteralPath $installPSModulePath)) { - Write-Host "C:\Modules directory is already present. Beginning to clear it up completely" - Remove-Item -Path "C:\Modules" -Recurse -Force + Write-Host "Creating '$installPSModulePath' folder to store PowerShell Azure modules" + $null = New-Item -Path $installPSModulePath -ItemType Directory } -mkdir "C:\Modules" +# Powershell Azure modules to install +$psAzureModulesToInstall = @{ + "azurerm" = @( + "2.1.0" + "3.8.0" + "4.2.1" + "5.1.1" + "6.7.0" + "6.13.1" + ) -$directoryListing = Get-ChildItem -Path "C:\Modules" + "azure" = @( + "2.1.0" + "3.8.0" + "4.2.1" + "5.1.1" + "5.3.0" + ) -if($directoryListing.Length -gt 0) + "az" = @( + "1.0.0" + "1.6.0" + "2.3.2" + "2.6.0" + "3.1.0" + "3.5.0" + ) +} + +# Download Azure PowerShell modules +foreach($psmoduleName in $psAzureModulesToInstall.Keys) { - Write-Host "C:\Modules was not deleted properly. It still has the following contents:" - $directoryListing -} -else { - Write-Host "The Directory is clean. There are no contents present in it" -} - -# Download and unzip the stored AzurePSModules from the vstsagentools public blob -$extractLocation = "C:\Modules" -$azurePsUri = @( - "https://vstsagenttools.blob.core.windows.net/tools/azurepowershellmodules/AzurePSModules.M157.20190808.27979.zip", - "https://vstsagenttools.blob.core.windows.net/tools/azurepowershellmodules/AzureRmPSModules.M157.20190808.27379.zip", - "https://vstsagenttools.blob.core.windows.net/tools/azurepowershellmodules/AzPSModules.M163.20191211.17769.zip" -) - -$azureRMModulePath = "C:\Modules\azurerm_2.1.0" -$azureModulePath = "C:\Modules\azure_2.1.0" -$finalPath = "" -$environmentPSModulePath = [Environment]::GetEnvironmentVariable("PSModulePath", "Machine") -$existingPaths = $environmentPSModulePath -split ';' -replace '\\$','' - -if ($existingPaths -notcontains $azureRMModulePath) { - $finalPath = $azureRMModulePath -} - -if ($existingPaths -notcontains $azureModulePath) { - if($finalPath -ne "") { - $finalPath = $finalPath + ";" + $azureModulePath - } - else { - $finalPath = $azureModulePath + Write-Host "Installing '$psmoduleName' to the '$installPSModulePath' path:" + $psmoduleVersions = $psAzureModulesToInstall[$psmoduleName] + foreach($psmoduleVersion in $psmoduleVersions) + { + $psmodulePath = Join-Path $installPSModulePath "${psmoduleName}_${psmoduleVersion}" + Write-Host " - $psmoduleVersion [$psmodulePath]" + try + { + Save-Module -Path $psmodulePath -Name $psmoduleName -RequiredVersion $psmoduleVersion -Force -ErrorAction Stop + } + catch + { + Write-Host "Error: $_" + exit 1 + } } } -if($finalPath -ne "") { - [Environment]::SetEnvironmentVariable("PSModulePath", $finalPath + ";" + $env:PSModulePath, "Machine") -} - -$env:PSModulePath = $env:PSModulePath.TrimStart(';') - -foreach ($uri in $azurePsUri) -{ - $targetFile = Download-Zip -BlobUri $uri - Extract-Zip -ZipFilePath $targetFile -TargetLocation $extractLocation -} +# Add AzureRM and Azure modules to the PSModulePath +$finalModulePath = '{0};{1};{2}' -f "${installPSModulePath}\azurerm_2.1.0", "${installPSModulePath}\azure_2.1.0", $env:PSModulePath +[Environment]::SetEnvironmentVariable("PSModulePath", $finalModulePath, "Machine") \ No newline at end of file diff --git a/images/win/scripts/Installers/Install-Bazel.ps1 b/images/win/scripts/Installers/Install-Bazel.ps1 new file mode 100644 index 000000000..fb14a856b --- /dev/null +++ b/images/win/scripts/Installers/Install-Bazel.ps1 @@ -0,0 +1,8 @@ +################################################################################ +## File: Install-Bazel.ps1 +## Desc: Install Bazel and Bazelisk (A user-friendly launcher for Bazel) +################################################################################ + +choco install bazel -y + +npm install -g @bazel/bazelisk \ No newline at end of file diff --git a/images/win/scripts/Installers/Install-Chrome.ps1 b/images/win/scripts/Installers/Install-Chrome.ps1 index aac913e71..44b58abb7 100644 --- a/images/win/scripts/Installers/Install-Chrome.ps1 +++ b/images/win/scripts/Installers/Install-Chrome.ps1 @@ -18,7 +18,7 @@ $GoogleSvcs | Set-SvcWithErrHandling -Arguments @{StartupType = "Disabled"}; $regGoogleUpdatePath = "HKLM:\SOFTWARE\Policies\Google\Update"; $regGoogleUpdateChrome = "HKLM:\SOFTWARE\Policies\Google\Chrome"; -($regGoogleUpdatePath, $regGoogleUpdateChrome) | ForEach-Object { +($regGoogleUpdatePath, $regGoogleUpdateChrome) | ForEach-Object { New-Item -Path $_ -Force; } @@ -39,4 +39,44 @@ $regGoogleParameters | ForEach-Object { New-ItemProperty @Arguments; } +# Reinstall Chrome Web Driver +Write-Host "Install Chrome WebDriver" +$DestinationPath = "$($env:SystemDrive)\"; +$ChromeDriverPath = "${DestinationPath}SeleniumWebDrivers\ChromeDriver"; +if (-not (Test-Path -Path $ChromeDriverPath)) { + New-Item -Path $ChromeDriverPath -ItemType "directory" +} + +$RegistryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" +$ChromePath = (Get-ItemProperty "$RegistryPath\chrome.exe").'(default)'; +[version]$ChromeVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($ChromePath).ProductVersion; +Write-Host "Chrome version: [$ChromeVersion]"; + +$ChromeDriverVersionUri = "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$($ChromeVersion.Major).$($ChromeVersion.Minor).$($ChromeVersion.Build)"; +Write-Host "Chrome driver version Uri [$ChromeDriverVersionUri]"; +Write-Host "Getting the Chrome driver version..."; +$ChromeDriverVersion = Invoke-WebRequest -Uri $ChromeDriverVersionUri; +Write-Host "Current Chrome driver version: [$ChromeDriverVersion]"; + +$ChromeDriverZipDownloadUri = "https://chromedriver.storage.googleapis.com/$($ChromeDriverVersion.ToString())/chromedriver_win32.zip"; +Write-Host "Chrome driver zip file download Uri: [$ChromeDriverZipDownloadUri]"; + +$DestFile= "$ChromeDriverPath\chromedriver_win32.zip"; +$ChromeDriverVersion.Content | Out-File -FilePath "$ChromeDriverPath\versioninfo.txt" -Force; + +Write-Host "Chrome driver download...."; +Invoke-WebRequest -Uri $ChromeDriverZipDownloadUri -OutFile $DestFile; + +Write-Host "Chrome driver install...."; +Expand-Archive -Path "$ChromeDriverPath\chromedriver_win32.zip" -DestinationPath $ChromeDriverPath -Force; +Remove-Item -Path "$ChromeDriverPath\chromedriver_win32.zip" -Force; + +Write-Host "Setting the environment variables" + +setx ChromeWebDriver "$ChromeDriverPath" /M; + +$regEnvKey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\'; +$PathValue = Get-ItemPropertyValue -Path $regEnvKey -Name 'Path'; +$PathValue += ";$ChromeDriverPath\"; +Set-ItemProperty -Path $regEnvKey -Name 'Path' -Value $PathValue; diff --git a/images/win/scripts/Installers/Install-DotnetSDK.ps1 b/images/win/scripts/Installers/Install-DotnetSDK.ps1 index 5d1545500..996887885 100644 --- a/images/win/scripts/Installers/Install-DotnetSDK.ps1 +++ b/images/win/scripts/Installers/Install-DotnetSDK.ps1 @@ -66,7 +66,8 @@ function InstallAllValidSdks() Invoke-WebRequest -Uri $dotnetChannel.'releases.json' -UseBasicParsing -OutFile "releases-$channelVersion.json" $currentReleases = Get-Content -Path "releases-$channelVersion.json" | ConvertFrom-Json # filtering out the preview/rc releases - $currentReleases = $currentReleases.'releases' | Where-Object { !$_.'release-version'.Contains('-') } | Sort-Object { [Version] $_.'release-version' } + # Remove version 3.1.102 from install list, .NET gave a heads-up that this might cause issues and they are working on a fix. https://github.com/dotnet/aspnetcore/issues/19133 + $currentReleases = $currentReleases.'releases' | Where-Object { !$_.'release-version'.Contains('-') -and !$_.'release-version'.Contains('3.1.2') } | Sort-Object { [Version] $_.'release-version' } ForEach ($release in $currentReleases) { if ($release.'sdks'.Count -gt 0) @@ -78,8 +79,7 @@ function InstallAllValidSdks() # Sort the sdks on version $sdks = @($release.'sdk'); - # Remove version 3.1.102 from install list, .NET gave a heads-up that this might cause issues and they are working on a fix. - $sdks += $release.'sdks' | Where-Object { !$_.'version'.Equals('3.1.102') -and !$_.'version'.Contains('-') -and !$_.'version'.Equals($release.'sdk'.'version') } + $sdks += $release.'sdks' | Where-Object { !$_.'version'.Contains('-') -and !$_.'version'.Equals($release.'sdk'.'version') } $sdks = $sdks | Sort-Object { [Version] $_.'version' } ForEach ($sdk in $sdks) diff --git a/images/win/scripts/Installers/Install-Edge.ps1 b/images/win/scripts/Installers/Install-Edge.ps1 index e5a641a1b..b84f0fc14 100644 --- a/images/win/scripts/Installers/Install-Edge.ps1 +++ b/images/win/scripts/Installers/Install-Edge.ps1 @@ -4,3 +4,38 @@ ################################################################################ choco install microsoft-edge -y + +# Install Microsoft Edge Web Driver +Write-Host "Install Edge WebDriver" +$DestinationPath = "$($env:SystemDrive)\"; + +$EdgeDriverPath = "${DestinationPath}SeleniumWebDrivers\EdgeDriver" +if (-not (Test-Path -Path $EdgeDriverPath)) { + New-Item -Path $EdgeDriverPath -ItemType "directory" +} + +$RegistryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" +$EdgePath = (Get-ItemProperty "$RegistryPath\msedge.exe").'(default)' +[version]$EdgeVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($EdgePath).ProductVersion +$EdgeDriverVersionUrl = "https://msedgedriver.azureedge.net/LATEST_RELEASE_$($EdgeVersion.Major)" +$EdgeDriverVersionFile = "$EdgeDriverPath\versioninfo.txt" +Invoke-WebRequest -Uri $EdgeDriverVersionUrl -OutFile $EdgeDriverVersionFile + +Write-Host "Microsoft Edge driver download started" +$EdgeDriverLatestVersion = Get-Content -Path $EdgeDriverVersionFile +$EdgeDriverDownloadUrl="https://msedgedriver.azureedge.net/${EdgeDriverLatestVersion}/edgedriver_win64.zip" +$DestFile = "$EdgeDriverPath\edgedriver_win64.zip" +Invoke-WebRequest -Uri $EdgeDriverDownloadUrl -OutFile $DestFile + +Write-Host "Microsoft Edge driver installation started" +Expand-Archive -Path $DestFile -DestinationPath $EdgeDriverPath -Force +Remove-Item -Path $DestFile -Force + +Write-Host "Setting the environment variables" + +setx EdgeWebDriver "$EdgeDriverPath" /M; + +$regEnvKey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\'; +$PathValue = Get-ItemPropertyValue -Path $regEnvKey -Name 'Path'; +$PathValue += ";$EdgeDriverPath\"; +Set-ItemProperty -Path $regEnvKey -Name 'Path' -Value $PathValue; diff --git a/images/win/scripts/Installers/Install-Firefox.ps1 b/images/win/scripts/Installers/Install-Firefox.ps1 index eb6cea70d..6f1dc218b 100644 --- a/images/win/scripts/Installers/Install-Firefox.ps1 +++ b/images/win/scripts/Installers/Install-Firefox.ps1 @@ -26,18 +26,27 @@ $firefoxPreferencesFolder = Join-Path $firefoxDirectoryPath "defaults\pref" New-Item -path $firefoxPreferencesFolder -Name 'local-settings.js' -Value 'pref("general.config.obscure_value", 0); pref("general.config.filename", "mozilla.cfg");' -ItemType file -force +# Install Firefox gecko Web Driver Write-Host "Install Firefox WebDriver" +$DestinationPath = "$($env:SystemDrive)\"; +$SeleniumWebDriverPath = Join-Path $DestinationPath "SeleniumWebDrivers" $geckodriverJson = Invoke-RestMethod "https://api.github.com/repos/mozilla/geckodriver/releases/latest" $geckodriverWindowsAsset = $geckodriverJson.assets | Where-Object { $_.name -Match "win64" } | Select-Object -First 1 -Write-Host "Geckodriver version: $($geckodriverJson.tag_name)" - +$geckodriverVersion = $geckodriverJson.tag_name +Write-Host "Geckodriver version: $geckodriverVersion" $DriversZipFile = $geckodriverWindowsAsset.name Write-Host "Selenium drivers download and install..." -$FirefoxDriverPath = Join-Path $env:SystemDrive "SeleniumWebDrivers\GeckoDriver" +$FirefoxDriverPath = Join-Path $SeleniumWebDriverPath "GeckoDriver" + +if (-not (Test-Path -Path $FirefoxDriverPath)) { + New-Item -Path $FirefoxDriverPath -ItemType "directory" +} + +$geckodriverVersion.Substring(1) | Out-File -FilePath "$FirefoxDriverPath\versioninfo.txt" -Force; # Install Firefox Web Driver Write-Host "FireFox driver download...." @@ -63,4 +72,4 @@ Write-Host "Setting the environment variables" Add-MachinePathItem -PathItem $FireFoxDriverPath setx GeckoWebDriver "$FirefoxDriverPath" /M; -exit 0 \ No newline at end of file +exit 0 diff --git a/images/win/scripts/Installers/Install-Git.ps1 b/images/win/scripts/Installers/Install-Git.ps1 index c926f6061..a67d7c998 100644 --- a/images/win/scripts/Installers/Install-Git.ps1 +++ b/images/win/scripts/Installers/Install-Git.ps1 @@ -12,7 +12,6 @@ choco install git -y --package-parameters="/GitAndUnixToolsOnPath /WindowsTermin # Disable GCM machine-wide [Environment]::SetEnvironmentVariable("GCM_INTERACTIVE", "Never", [System.EnvironmentVariableTarget]::Machine) -Add-MachinePathItem "C:\Program Files\Git\usr\bin" Add-MachinePathItem "C:\Program Files\Git\bin" exit 0 diff --git a/images/win/scripts/Installers/Install-IEWebDriver.ps1 b/images/win/scripts/Installers/Install-IEWebDriver.ps1 new file mode 100644 index 000000000..7dfd8b42f --- /dev/null +++ b/images/win/scripts/Installers/Install-IEWebDriver.ps1 @@ -0,0 +1,32 @@ +################################################################################ +## File: Install-SeleniumWebDrivers.ps1 +## Desc: Install Selenium Web Drivers +################################################################################ +$DestinationPath = "$($env:SystemDrive)\"; +$DriversZipFile = "SeleniumWebDrivers.zip" +Write-Host "Destination path: [$DestinationPath]"; +Write-Host "Selenium drivers download and install..."; +try { + Invoke-WebRequest -UseBasicParsing -Uri "https://seleniumwebdrivers.blob.core.windows.net/seleniumwebdrivers/${DriversZipFile}" -OutFile $DriversZipFile; +} +catch { + Write-Error "[!] Failed to download $DriversZipFile"; + exit 1; +} + +$TempSeleniumDir = Join-Path $Env:TEMP "SeleniumWebDrivers" +Expand-Archive -Path $DriversZipFile -DestinationPath $Env:TEMP -Force; +Remove-Item $DriversZipFile; + +$SeleniumWebDriverPath = Join-Path $DestinationPath "SeleniumWebDrivers" +$IEDriverPathTemp = Join-Path $TempSeleniumDir 'IEDriver' + +if (-not (Test-Path -Path $SeleniumWebDriverPath)) { + New-Item -Path $SeleniumWebDriverPath -ItemType "directory" +} + +Move-Item -Path "$IEDriverPathTemp" -Destination $SeleniumWebDriverPath + +Write-Host "Setting the environment variables" + +setx IEWebDriver "C:\SeleniumWebDrivers\IEDriver" /M; diff --git a/images/win/scripts/Installers/Install-Packer.ps1 b/images/win/scripts/Installers/Install-Packer.ps1 new file mode 100644 index 000000000..4374175d1 --- /dev/null +++ b/images/win/scripts/Installers/Install-Packer.ps1 @@ -0,0 +1,6 @@ +################################################################################ +## File: Install-Packer.ps1 +## Desc: Install Packer +################################################################################ + +choco install packer -y diff --git a/images/win/scripts/Installers/Install-SeleniumWebDrivers.ps1 b/images/win/scripts/Installers/Install-SeleniumWebDrivers.ps1 deleted file mode 100644 index 6170a83e5..000000000 --- a/images/win/scripts/Installers/Install-SeleniumWebDrivers.ps1 +++ /dev/null @@ -1,96 +0,0 @@ -################################################################################ -## File: Install-SeleniumWebDrivers.ps1 -## Desc: Install Selenium Web Drivers -################################################################################ -$DestinationPath = "$($env:SystemDrive)\"; -$DriversZipFile = "SeleniumWebDrivers.zip" -Write-Host "Destination path: [$DestinationPath]"; -Write-Host "Selenium drivers download and install..."; -try { - Invoke-WebRequest -UseBasicParsing -Uri "https://seleniumwebdrivers.blob.core.windows.net/seleniumwebdrivers/${DriversZipFile}" -OutFile $DriversZipFile; -} -catch { - Write-Error "[!] Failed to download $DriversZipFile"; - exit 1; -} - -$TempSeleniumDir = Join-Path $Env:TEMP "SeleniumWebDrivers" -Expand-Archive -Path $DriversZipFile -DestinationPath $Env:TEMP -Force; -Remove-Item $DriversZipFile; - -$SeleniumWebDriverPath = Join-Path $DestinationPath "SeleniumWebDrivers" -$IEDriverPathTemp = Join-Path $TempSeleniumDir 'IEDriver' - -if (-not (Test-Path -Path $SeleniumWebDriverPath)) { - New-Item -Path $SeleniumWebDriverPath -ItemType "directory" -} - -Move-Item -Path "$IEDriverPathTemp" -Destination $SeleniumWebDriverPath - - -# Reinstall Chrome Web Driver -$ChromeDriverPath = "${DestinationPath}SeleniumWebDrivers\ChromeDriver"; - -if (-not (Test-Path -Path $ChromeDriverPath)) { - New-Item -Path $ChromeDriverPath -ItemType "directory" -} - -$RegistryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" -$ChromePath = (Get-ItemProperty "$RegistryPath\chrome.exe").'(default)'; -[version]$ChromeVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($ChromePath).ProductVersion; -Write-Host "Chrome version: [$ChromeVersion]"; - -$ChromeDriverVersionUri = "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$($ChromeVersion.Major).$($ChromeVersion.Minor).$($ChromeVersion.Build)"; -Write-Host "Chrome driver version Uri [$ChromeDriverVersionUri]"; -Write-Host "Getting the Chrome driver version..."; -$ChromeDriverVersion = Invoke-WebRequest -Uri $ChromeDriverVersionUri; -Write-Host "Current Chrome driver version: [$ChromeDriverVersion]"; - -$ChromeDriverZipDownloadUri = "https://chromedriver.storage.googleapis.com/$($ChromeDriverVersion.ToString())/chromedriver_win32.zip"; -Write-Host "Chrome driver zip file download Uri: [$ChromeDriverZipDownloadUri]"; - -$DestFile= "$ChromeDriverPath\chromedriver_win32.zip"; -$ChromeDriverVersion.Content | Out-File -FilePath "$ChromeDriverPath\versioninfo.txt" -Force; - -Write-Host "Chrome driver download...."; -Invoke-WebRequest -Uri $ChromeDriverZipDownloadUri -OutFile $DestFile; - -Write-Host "Chrome driver install...."; -Expand-Archive -Path "$ChromeDriverPath\chromedriver_win32.zip" -DestinationPath $ChromeDriverPath -Force; -Remove-Item -Path "$ChromeDriverPath\chromedriver_win32.zip" -Force; - -# Install Microsoft Edge Web Driver -Write-Host "Microsoft Edge driver download...." -$EdgeDriverPath = "${DestinationPath}SeleniumWebDrivers\EdgeDriver" -if (-not (Test-Path -Path $EdgeDriverPath)) { - New-Item -Path $EdgeDriverPath -ItemType "directory" -} - -$EdgePath = (Get-ItemProperty "$RegistryPath\msedge.exe").'(default)' -[version]$EdgeVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($EdgePath).ProductVersion -$EdgeDriverVersionUrl = "https://msedgedriver.azureedge.net/LATEST_RELEASE_$($EdgeVersion.Major)" -$EdgeDriverVersionFile = "$EdgeDriverPath\versioninfo.txt" -Invoke-WebRequest -Uri $EdgeDriverVersionUrl -OutFile $EdgeDriverVersionFile - -$EdgeDriverLatestVersion = Get-Content -Path $EdgeDriverVersionFile -$EdgeDriverDownloadUrl="https://msedgedriver.azureedge.net/${EdgeDriverLatestVersion}/edgedriver_win64.zip" -$DestFile = "$EdgeDriverPath\edgedriver_win64.zip" -Invoke-WebRequest -Uri $EdgeDriverDownloadUrl -OutFile $DestFile - -Write-Host "Microsoft Edge driver install...." -Expand-Archive -Path $DestFile -DestinationPath $EdgeDriverPath -Force -Remove-Item -Path $DestFile -Force - -Write-Host "Setting the environment variables" - -setx IEWebDriver "C:\SeleniumWebDrivers\IEDriver" /M; -setx ChromeWebDriver "$ChromeDriverPath" /M; -setx EdgeWebDriver "$EdgeDriverPath" /M; - -$regEnvKey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\'; -$PathValue = Get-ItemPropertyValue -Path $regEnvKey -Name 'Path'; -$PathValue += ";$ChromeDriverPath\"; -$PathValue += ";$EdgeDriverPath\"; -Set-ItemProperty -Path $regEnvKey -Name 'Path' -Value $PathValue; - -exit 0; diff --git a/images/win/scripts/Installers/Update-AndroidSDK.ps1 b/images/win/scripts/Installers/Update-AndroidSDK.ps1 index 559f69c14..0487bb4ee 100644 --- a/images/win/scripts/Installers/Update-AndroidSDK.ps1 +++ b/images/win/scripts/Installers/Update-AndroidSDK.ps1 @@ -68,6 +68,7 @@ Push-Location -Path $sdk.FullName "platforms;android-22" ` "platforms;android-21" ` "platforms;android-19" ` + "build-tools;29.0.3" ` "build-tools;29.0.2" ` "build-tools;29.0.0" ` "build-tools;28.0.3" ` diff --git a/images/win/scripts/Installers/Update-ImageData.ps1 b/images/win/scripts/Installers/Update-ImageData.ps1 new file mode 100644 index 000000000..7cbffec0d --- /dev/null +++ b/images/win/scripts/Installers/Update-ImageData.ps1 @@ -0,0 +1,35 @@ +$os = Get-CimInstance -ClassName Win32_OperatingSystem +$caption = $os.Caption +$osName = $caption.Substring(0, $caption.LastIndexOf(" ")) +$osEdition = $caption.Substring($caption.LastIndexOf(" ")+1) +$osVersion = $os.Version +$imageVersion = $env:IMAGE_VERSION +$imageDataFile = $env:IMAGEDATA_FILE +$githubUrl="https://github.com/actions/virtual-environments/blob" + +if ($caption -match "2019") +{ + $imageLabel = "windows-2019" + $softwareUrl = "${githubUrl}/win19/${imageVersion}/images/win/Windows2019-Readme.md" +} + +if ($caption -match "2016") +{ + $imageLabel = "windows-2016" + $softwareUrl = "${githubUrl}/win16/${imageVersion}/images/win/Windows2016-Readme.md" +} + +$json = @" +[ + { + "group": "Operating System", + "detail": "${osName}\n${osVersion}\n${osEdition}" + }, + { + "group": "Virtual Environment", + "detail": "Environment: ${imageLabel}\nVersion: ${imageVersion}\nIncluded Software: ${softwareUrl}" + } +] +"@ + +$json | Out-File -FilePath $imageDataFile diff --git a/images/win/scripts/Installers/Validate-AzureModules.ps1 b/images/win/scripts/Installers/Validate-AzureModules.ps1 index 6927cce69..a7be9ef11 100644 --- a/images/win/scripts/Installers/Validate-AzureModules.ps1 +++ b/images/win/scripts/Installers/Validate-AzureModules.ps1 @@ -5,67 +5,92 @@ Import-Module -Name ImageHelpers -Force -$DefaultModule = Get-Module -Name AzureRM -ListAvailable | Select-Object -First 1 - -$env:PSModulePath = $env:PSModulePath + ";C:\Modules" - -$azureModules = Get-Module -Name Azure -ListAvailable | Select-Object Name,Version,Path | Format-Table | Out-String - -Write-Host "The Azure Modules finally present are:" -$azureModules - -if( ($azureModules -match "2.1.0") -and ($azureModules -match "3.8.0") -and ($azureModules -match "4.2.1") -and ($azureModules -match "5.1.1")) -{ - Write-Host "Required Azure modules are present" -} -else { - Write-Host "One or more required Azure modules are not present" - throw "One or more required Azure modules are not present." -} - - -$azureRMModules = Get-Module -Name AzureRM -ListAvailable | Select-Object Name,Version,Path | Format-Table | Out-String - -Write-Host "The AzureRM Modules finally present are:" -$azureRMModules - -if( ($azureRMModules -match "2.1.0") -and ($azureRMModules -match "3.8.0") -and ($azureRMModules -match "4.2.1") -and ($azureRMModules -match "5.1.1")) -{ - Write-Host "Required AzureRM modules are present" - -} -else { - Write-Host "One or more required AzureRM modules are not present" - throw "One or more required AzureRM modules are not present." -} - - -$azureModules = Get-Module -Name AzureRM -ListAvailable - - # Adding description of the software to Markdown -$SoftwareName = "Azure/AzureRM Powershell modules" - -$Description = @" -#### $($DefaultModule.Version) - -This version is installed and is available via ``Get-Module -ListAvailable`` -"@ - -Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description - -foreach( $module in $azureModules) +function Add-ModuleDescription { - if($module.Version -ne $DefaultModule.Version) + param($DefaultModule, [String]$ModuleName) + + # Adding description of the software to Markdown + $softwareName = "$moduleName PowerShell module" + + if ($defaultModule) { + $description = "#### $($defaultModule.Version)`n`nThis version is installed and is available via ``Get-Module -ListAvailable``" + } + else + { + $Description = "" + } - $CurrentModule = @" -#### $($module.Version) + Add-SoftwareDetailsToMarkdown -SoftwareName $softwareName -DescriptionMarkdown $description + if($moduleName -eq 'Az') + { + $prop = @{n="Version";e={[Version]$_.Directory.Name}},@{n="Path";e={$_.FullName}} + $azureModules = Get-ChildItem C:\Modules\az_*\Az\*\Az.psd1 | Select-Object $prop + } + else + { + $azureModules = Get-Module -Name $moduleName -ListAvailable | Sort-Object Version -Unique + } -This version is saved but not installed -_Location:_ $($module.Path) + foreach($module in $azureModules) + { + if($module.Version -ne $defaultModule.Version) + { -"@ - Add-ContentToMarkdown -Content $CurrentModule + $currentModule = "#### $($module.Version)`n`nThis version is saved but not installed`n_Location:_ $($module.Path)" + Add-ContentToMarkdown -Content $currentModule + } } } + +function Validate-AzureModule +{ + param([String]$ModuleName, [String[]]$ModuleVersions) + + foreach($moduleVersion in $moduleVersions) + { + $modulePath = "${installPSModulePath}\${moduleName}_${moduleVersion}" + # Import each module in PowerShell session + $job = Start-Job -ScriptBlock { + param($modulePath, $moduleName) + + $env:PsModulePath = "$modulePath;$env:PsModulePath" + Import-Module -Name $moduleName + Get-Module -Name $moduleName + } -ArgumentList $modulePath, $moduleName + $isError = $job | Wait-Job | Foreach-Object ChildJobs | Where-Object {$_.Error} + if($isError) + { + Write-Host "Required '$moduleName' module '$moduleVersion' version is not present" + exit 1 + } + $job | Receive-Job | Select-Object Name,Version,Path + Remove-Job $job + } +} + +# Modules path +$installPSModulePath = 'C:\Modules' + +# Validate Azure modules and versions +$azurermVersions = "2.1.0", "3.8.0", "4.2.1", "5.1.1", "6.7.0", "6.13.1" +Validate-AzureModule -ModuleName AzureRM -ModuleVersions $azurermVersions + +$azureVersions = "2.1.0", "3.8.0", "4.2.1", "5.1.1", "5.3.0" +Validate-AzureModule -ModuleName Azure -ModuleVersions $azureVersions + +$azVersions = "1.0.0", "1.6.0", "2.3.2", "2.6.0", "3.1.0", "3.5.0" +Validate-AzureModule -ModuleName Az -ModuleVersions $azVersions + +# Get default modules version +$defaultAzureRMModule = Get-Module -Name AzureRM -ListAvailable +$defaultAzureModule = Get-Module -Name Azure -ListAvailable + +# Add modules to the PSModulePath +$env:PSModulePath = $env:PSModulePath + ";C:\Modules" + +# Adding description of the software to Markdown +Add-ModuleDescription -DefaultModule $defaultAzureRMModule -ModuleName AzureRM +Add-ModuleDescription -DefaultModule $defaultAzureModule -ModuleName Azure +Add-ModuleDescription -ModuleName Az \ No newline at end of file diff --git a/images/win/scripts/Installers/Validate-Bazel.ps1 b/images/win/scripts/Installers/Validate-Bazel.ps1 new file mode 100644 index 000000000..9cdccda4d --- /dev/null +++ b/images/win/scripts/Installers/Validate-Bazel.ps1 @@ -0,0 +1,44 @@ +################################################################################ +## File: Validate-Bazel.ps1 +## Desc: Validate Bazel and Bazelisk (A user-friendly launcher for Bazel) +################################################################################ + +if (Get-Command -Name 'bazel') +{ + Write-Host "bazel on path" +} +else +{ + Write-Host 'bazel is not on path' + exit 1 +} + +if (Get-Command -Name 'bazelisk') +{ + Write-Host "bazelisk on path" +} +else +{ + Write-Host 'bazelisk is not on path' + exit 1 +} + +# Adding description of Bazel to Markdown +$SoftwareName = "bazel" + +$Description = @" +_Version:_ $(bazel --version)
+"@ + +Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description + +# Adding description of Bazelisk to Markdown +$bazelisk_version = ((bazelisk version | Select-String "Bazelisk version:") -Split(" v"))[2] + +$SoftwareName = "bazelisk" + +$Description = @" +_Version:_ $bazelisk_version
+"@ + +Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description \ No newline at end of file diff --git a/images/win/scripts/Installers/Validate-Mercurial.ps1 b/images/win/scripts/Installers/Validate-Mercurial.ps1 index 6212d5f28..74299f06f 100644 --- a/images/win/scripts/Installers/Validate-Mercurial.ps1 +++ b/images/win/scripts/Installers/Validate-Mercurial.ps1 @@ -15,7 +15,7 @@ else # Adding description of the software to Markdown $SoftwareName = "Mercurial" -$(hg --version).Split([System.Environment]::NewLine)[0] -match "\d+\.\d+\.\d+" +$(hg --version).Split([System.Environment]::NewLine)[0] -match "\d+\.\d+" $MercurialVersion = $matches[0] $Description = @" diff --git a/images/win/scripts/Installers/Validate-Packer.ps1 b/images/win/scripts/Installers/Validate-Packer.ps1 new file mode 100644 index 000000000..85473557e --- /dev/null +++ b/images/win/scripts/Installers/Validate-Packer.ps1 @@ -0,0 +1,24 @@ +################################################################################ +## File: Validate-Packer.ps1 +## Desc: Validate Packer +################################################################################ + +if (Get-Command -Name 'packer') +{ + Write-Host "Packer is on path" +} +else +{ + Write-Host 'Packer is not on path' + exit 1 +} + +# Adding description of the software to Markdown +$SoftwareName = "Packer" +$PackerVersion = packer --version + +$Description = @" +_Version:_ $PackerVersion
+"@ + +Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description diff --git a/images/win/scripts/Installers/Validate-SeleniumWebDrivers.ps1 b/images/win/scripts/Installers/Validate-SeleniumWebDrivers.ps1 index e4979bd78..dd74b95e6 100644 --- a/images/win/scripts/Installers/Validate-SeleniumWebDrivers.ps1 +++ b/images/win/scripts/Installers/Validate-SeleniumWebDrivers.ps1 @@ -36,9 +36,9 @@ if ( (Get-Item "$EdgeDriverPath\msedgedriver.exe").VersionInfo $versionFileName = "versioninfo.txt"; - $chromedriverversion = Get-Content -Path "$IEDriverPath\$versionFileName" + $chromedriverversion = Get-Content -Path "$ChromeDriverPath\$versionFileName" $geckodriverversion = Get-Content -Path "$GeckoDriverPath\$versionFileName" - $iedriverversion = Get-Content -Path "$ChromeDriverPath\$versionFileName" + $iedriverversion = Get-Content -Path "$IEDriverPath\$versionFileName" $edgedriverversion = Get-Content -Path "$EdgeDriverPath\$versionFileName" # Adding description of the software to Markdown diff --git a/images/win/scripts/Installers/Validate-VSWhere.ps1 b/images/win/scripts/Installers/Validate-VSWhere.ps1 index 7b41519c4..c44ba7d41 100644 --- a/images/win/scripts/Installers/Validate-VSWhere.ps1 +++ b/images/win/scripts/Installers/Validate-VSWhere.ps1 @@ -15,7 +15,7 @@ else # Adding description of the software to Markdown $SoftwareName = "VSWhere" -$VswhereVersion = $(vswhere) +$VswhereVersion = (Get-Command -Name vswhere).FileVersionInfo.ProductVersion $Description = @" _Version_: $VswhereVersion
diff --git a/images/win/scripts/Installers/Validate-Zstd.ps1 b/images/win/scripts/Installers/Validate-Zstd.ps1 index 18f3a3343..afb6a030f 100644 --- a/images/win/scripts/Installers/Validate-Zstd.ps1 +++ b/images/win/scripts/Installers/Validate-Zstd.ps1 @@ -15,7 +15,7 @@ else # Adding description of the software to Markdown $SoftwareName = "zstd" -$zstdVersion = $(zstd --version).Split(' ')[6].Split(',')[0] +$zstdVersion = $(zstd --version).Split(' ')[6].Split(',')[0].Substring(1) $Description = @" _Version:_ $zstdVersion
diff --git a/images/win/scripts/Installers/Windows2016/Install-SSDT.ps1 b/images/win/scripts/Installers/Windows2016/Install-SSDT.ps1 index f51f49d39..9362c9bd6 100644 --- a/images/win/scripts/Installers/Windows2016/Install-SSDT.ps1 +++ b/images/win/scripts/Installers/Windows2016/Install-SSDT.ps1 @@ -5,8 +5,8 @@ Import-Module -Name ImageHelpers -Force -#SSDT for Visual Studio 2017 (15.8.2) -$InstallerURI = 'https://download.microsoft.com/download/D/F/8/DF8B51B9-8E9F-47F3-A27B-33EEDADD8966/SSDT-Setup-ENU.exe' +#SSDT for Visual Studio 2017 (15.9.3) +$InstallerURI = 'https://download.microsoft.com/download/5/2/D/52DEF429-5B17-470C-82D9-654116080B15/SSDT-Setup-ENU.exe' $InstallerName = 'SSDT-Setup-ENU.exe' $logFilePath = "$env:TEMP\ssdtlog.txt" $ArgumentList = ('/install', 'INSTALLALL', '/passive', '/norestart', "/log `"$logFilePath`"") diff --git a/images/win/scripts/Installers/Windows2019/Install-AnalysisExtenstion.ps1 b/images/win/scripts/Installers/Windows2019/Install-AnalysisExtenstion.ps1 new file mode 100644 index 000000000..43bfb6030 --- /dev/null +++ b/images/win/scripts/Installers/Windows2019/Install-AnalysisExtenstion.ps1 @@ -0,0 +1,44 @@ +################################################################################### +## File: Install-AnalysisExtenstion.ps1 +## Desc: Install the Microsoft Analysis Services Projects Visual Studio extension +################################################################################### + + +$extensionUrl = "https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ProBITools/vsextensions/MicrosoftAnalysisServicesModelingProjects/2.9.5/vspackage" +$extensionDownloadPath = Join-Path $Env:TEMP "Microsoft.DataTools.AnalysisServices.vsix" +Write-Host "Downloading Microsoft.DataTools.AnalysisServices.vsix extension" +(New-Object System.Net.WebClient).DownloadFile($extensionUrl, $extensionDownloadPath) + +Write-Host "Installing Microsoft.DataTools.AnalysisServices.vsix extension" +try +{ + $process = Start-Process ` + -FilePath "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\VSIXInstaller.exe" ` + -ArgumentList ("/quiet", "$extensionDownloadPath") ` + -Wait ` + -PassThru +} +catch +{ + Write-Host "There is an error during Microsoft.DataTools.AnalysisServices.vsix installation" + $_ + exit 1 +} + + +$exitCode = $process.ExitCode + +if ($exitCode -eq 0 -or $exitCode -eq 1001) # 1001 means the extension is already installed +{ + Write-Host "Microsoft.DataTools.AnalysisServices.vsix installed successfully" +} +else +{ + Write-Host "Unsuccessful exit code returned by the installation process: $exitCode." + exit 1 +} + +#Cleanup installation files +Remove-Item -Force -Confirm:$false $extensionDownloadPath + +exit $exitCode diff --git a/images/win/scripts/Installers/Windows2019/Install-VS2019.ps1 b/images/win/scripts/Installers/Windows2019/Install-VS2019.ps1 index 6e631c4bb..a9658fd72 100644 --- a/images/win/scripts/Installers/Windows2019/Install-VS2019.ps1 +++ b/images/win/scripts/Installers/Windows2019/Install-VS2019.ps1 @@ -112,6 +112,15 @@ $WorkLoads = '--allWorkloads --includeRecommended ' + ` '--add Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest ' + ` '--add Microsoft.VisualStudio.Component.VC.v141 ' + ` '--add Microsoft.VisualStudio.Component.VC.v141.x86.x64 ' + ` + '--add Microsoft.VisualStudio.Component.VC.v141.x86.x64.Spectre ' + ` + '--add Microsoft.VisualStudio.Component.VC.v141.ARM.Spectre ' + ` + '--add Microsoft.VisualStudio.Component.VC.v141.ARM64.Spectre ' + ` + '--add Microsoft.VisualStudio.Component.VC.v141.ATL.ARM.Spectre ' + ` + '--add Microsoft.VisualStudio.Component.VC.v141.ATL.ARM64.Spectre ' + ` + '--add Microsoft.VisualStudio.Component.VC.v141.ATL.Spectre ' + ` + '--add Microsoft.VisualStudio.Component.VC.v141.MFC.ARM.Spectre ' + ` + '--add Microsoft.VisualStudio.Component.VC.v141.MFC.ARM64.Spectre ' + ` + '--add Microsoft.VisualStudio.Component.VC.v141.MFC.Spectre ' + ` '--add Microsoft.VisualStudio.Component.Windows10SDK.16299 ' + ` '--add Microsoft.VisualStudio.Component.Windows10SDK.17134 ' + ` '--add Microsoft.VisualStudio.Component.Windows10SDK.17763 ' + ` diff --git a/images/win/scripts/Installers/Windows2019/Validate-AnalysisExtenstion.ps1 b/images/win/scripts/Installers/Windows2019/Validate-AnalysisExtenstion.ps1 new file mode 100644 index 000000000..fad85d512 --- /dev/null +++ b/images/win/scripts/Installers/Windows2019/Validate-AnalysisExtenstion.ps1 @@ -0,0 +1,18 @@ +################################################################################ +## File: Validate-AnalysisExtenstion.ps1 +## Desc: Validate Microsoft Analysis Services Projects Visual Studio extension +################################################################################ + +Import-Module -Name ImageHelpers -Force + +#AnalysisPackage doesn't have any proper name in the state.packages.json file, only id is available +$AnalysisPackageVersion = Get-VS19ExtensionVersion -packageName "04a86fc2-dbd5-4222-848e-911638e487fe" + +# Adding description of the software to Markdown +$SoftwareName = "Microsoft Analysis Services Projects Visual Studio Extension" + +$Description = @" +_Version:_ $AnalysisPackageVersion
+"@ + +Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description \ No newline at end of file