diff --git a/.github/ISSUE_TEMPLATE/announcement.md b/.github/ISSUE_TEMPLATE/announcement.md
new file mode 100644
index 00000000..0d501f6f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/announcement.md
@@ -0,0 +1,34 @@
+---
+name: Announcement
+about: Submit an announcement
+title: ''
+labels: Announcement
+assignees: ''
+
+---
+
+**Breaking changes**
+
+
+**Target date**
+
+
+**The motivation for the changes**
+
+
+**Possible impact**
+
+
+**Virtual environments affected**
+- [ ] Ubuntu 16.04
+- [ ] Ubuntu 18.04
+- [ ] Ubuntu 20.04
+- [ ] macOS 10.13
+- [ ] macOS 10.14
+- [ ] macOS 10.15
+- [ ] macOS 11.0
+- [ ] Windows Server 2016 R2
+- [ ] Windows Server 2019
+
+**Mitigation ways**
+
diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
index b95d5ebc..cf1a5340 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.md
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -17,10 +17,11 @@ A clear and concise description of what the bug is, and why you consider it to b
**Virtual environments affected**
+- [ ] Ubuntu 16.04
+- [ ] Ubuntu 18.04
+- [ ] Ubuntu 20.04
- [ ] macOS 10.15
-- [ ] Ubuntu 16.04 LTS
-- [ ] Ubuntu 18.04 LTS
-- [ ] Ubuntu 20.04 LTS
+- [ ] macOS 11.0
- [ ] Windows Server 2016 R2
- [ ] Windows Server 2019
diff --git a/.github/ISSUE_TEMPLATE/tool-request.md b/.github/ISSUE_TEMPLATE/tool-request.md
index 2eeb8737..72fdd006 100644
--- a/.github/ISSUE_TEMPLATE/tool-request.md
+++ b/.github/ISSUE_TEMPLATE/tool-request.md
@@ -25,10 +25,11 @@ assignees: ''
**Virtual environments affected**
+- [ ] Ubuntu 16.04
+- [ ] Ubuntu 18.04
+- [ ] Ubuntu 20.04
- [ ] macOS 10.15
-- [ ] Ubuntu 16.04 LTS
-- [ ] Ubuntu 18.04 LTS
-- [ ] Ubuntu 20.04 LTS
+- [ ] macOS 11.0
- [ ] Windows Server 2016 R2
- [ ] Windows Server 2019
diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml
index 42eb7cad..48ec7dd6 100644
--- a/.github/workflows/linter.yml
+++ b/.github/workflows/linter.yml
@@ -1,11 +1,11 @@
# CI Validation
-name: CI
+name: Linter
on:
pull_request:
- branches: [$default-branch]
-
+ branches: [ main ]
+
jobs:
build:
name: Lint JSON & MD files
@@ -23,3 +23,7 @@ jobs:
VALIDATE_JSON: true
VALIDATE_MD: true
DEFAULT_BRANCH: ${{ github.base_ref }}
+
+ - name: Checking shebang lines in MacOS and Ubuntu releases.
+ run: ./images.CI/shebang-linter.ps1
+ shell: pwsh
diff --git a/README.md b/README.md
index b3c59649..9456f0bc 100644
--- a/README.md
+++ b/README.md
@@ -9,13 +9,18 @@ For general questions about using the virtual environments or writing your Actio
| Ubuntu 20.04 | `ubuntu-20.04` | [ubuntu-20.04] | [](https://actionvirtualenvironmentsstatus.azurewebsites.net/api/status?imageName=ubuntu20&redirect=1)
| Ubuntu 18.04 | `ubuntu-latest` or `ubuntu-18.04` | [ubuntu-18.04] | [](https://actionvirtualenvironmentsstatus.azurewebsites.net/api/status?imageName=ubuntu18&redirect=1)
| Ubuntu 16.04 | `ubuntu-16.04` | [ubuntu-16.04] | [](https://actionvirtualenvironmentsstatus.azurewebsites.net/api/status?imageName=ubuntu16&redirect=1) |
-| macOS 10.15 | `macos-latest` or `macos-10.15` | [macOS-10.15] | [](https://actionvirtualenvironmentsstatus.azurewebsites.net/api/status?imageName=MacOS&redirect=1)
+| macOS 11.0 | `macos-11.0` | [macOS-11.0] | [](https://actionvirtualenvironmentsstatus.azurewebsites.net/api/status?imageName=macos-11.0&redirect=1)
+| macOS 10.15 | `macos-latest` or `macos-10.15` | [macOS-10.15] | [](https://actionvirtualenvironmentsstatus.azurewebsites.net/api/status?imageName=macos-10.15&redirect=1)
| Windows Server 2019 | `windows-latest` or `windows-2019` | [windows-2019] | [](https://actionvirtualenvironmentsstatus.azurewebsites.net/api/status?imageName=windows-2019&redirect=1)
| Windows Server 2016 | `windows-2016` | [windows-2016] | [](https://actionvirtualenvironmentsstatus.azurewebsites.net/api/status?imageName=windows-2016&redirect=1)
```
The Ubuntu 20.04 virtual environment is currently provided as a preview only.
The "ubuntu-latest" YAML workflow label still uses the Ubuntu 18.04 virtual environment.
```
+```
+The MacOS 11.0 virtual environment is currently provided as a preview only.
+The "macos-latest" YAML workflow label still uses the MacOS 10.15 virtual environment.
+```
***Looking for other Linux distributions?*** We do not plan to offer other Linux distributions. We recommend using Docker if you'd like to build using other distributions with the hosted virtual environments. Alternatively, you can leverage [self-hosted runners] and fully customize your environment to your needs.
@@ -56,4 +61,5 @@ Low Impact changes will be pinned in this repository and marked with the [Announ
[Windows-2019]: https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
[windows-2016]: https://github.com/actions/virtual-environments/blob/main/images/win/Windows2016-Readme.md
[macOS-10.15]: https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
+[macOS-11.0]: https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11.0-Readme.md
[self-hosted runners]: https://help.github.com/en/actions/hosting-your-own-runners
diff --git a/images.CI/macos/azure-pipelines/image-generation.yml b/images.CI/macos/azure-pipelines/image-generation.yml
index 89216e21..60837bc1 100644
--- a/images.CI/macos/azure-pipelines/image-generation.yml
+++ b/images.CI/macos/azure-pipelines/image-generation.yml
@@ -52,7 +52,8 @@ jobs:
inputs:
targetType: 'filePath'
filePath: ./images.CI/macos/select-datastore.ps1
- arguments: -VIServer "$(vcenter-server-v2)" `
+ arguments: -VMName "$(VirtualMachineName)" `
+ -VIServer "$(vcenter-server-v2)" `
-VIUserName "$(vcenter-username-v2)" `
-VIPassword "$(vcenter-password-v2)"
@@ -121,8 +122,8 @@ jobs:
condition: always()
- task: PowerShell@2
- displayName: 'Move vm to cold storage'
- condition: succeededOrFailed()
+ displayName: 'Move vm to cold storage and clear datastore tag'
+ condition: always()
inputs:
targetType: 'filePath'
filePath: ./images.CI/macos/move-vm.ps1
diff --git a/images.CI/macos/move-vm.ps1 b/images.CI/macos/move-vm.ps1
index 69872140..37e83906 100644
--- a/images.CI/macos/move-vm.ps1
+++ b/images.CI/macos/move-vm.ps1
@@ -48,6 +48,13 @@ Import-Module $PSScriptRoot\helpers.psm1 -DisableNameChecking
# Connection to a vCenter Server system
Connect-VCServer
+# Clear previously assigned tag with VM Name
+try {
+ Remove-Tag $VMName -Confirm:$false
+} catch {
+ Write-Host "Tag with $VMName doesn't exist"
+}
+
$vm = Get-VM $VMName
if ($env:AGENT_JOBSTATUS -eq 'Failed') {
diff --git a/images.CI/macos/select-datastore.ps1 b/images.CI/macos/select-datastore.ps1
index d6477700..2884fdf4 100644
--- a/images.CI/macos/select-datastore.ps1
+++ b/images.CI/macos/select-datastore.ps1
@@ -20,6 +20,10 @@ vCenter password (Example "12345678")
[CmdletBinding()]
param(
+ [Parameter(Mandatory)]
+ [ValidateNotNullOrEmpty()]
+ [string]$VMName,
+
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$VIServer,
@@ -30,35 +34,72 @@ param(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
- [string]$VIPassword
+ [string]$VIPassword,
+
+ [string]$TagCategory = "Busy"
)
# Import helpers module
Import-Module $PSScriptRoot\helpers.psm1 -DisableNameChecking
+function Select-DataStore {
+ param (
+ [string]$VMName,
+ [string]$TagCategory,
+ [string]$TemplateDatastore = "ds-local-Datastore-*",
+ [int]$ThresholdInGb = 400,
+ [int]$VMCount = 2,
+ [int]$Retries = 5
+ )
+
+ # 1. Name starts with ds-local-Datastore
+ # 2. FreespaceGB > 400 Gb
+ # 3. VM count on a datastore < 2
+
+ Write-Host "Start Datastore selection process..."
+ $allDatastores = Get-Datastore -Name $templateDatastore | Where-Object { $_.State -eq "Available" }
+ $buildDatastore = $allDatastores | Where-Object { $_.FreeSpaceGB -ge $thresholdInGb } | Where-Object {
+ $vmOnDatastore = @((Get-ChildItem -Path $_.DatastoreBrowserPath).Name -notmatch "^\.").Count
+ $vmOnDatastore -lt $vmCount
+ } | Select-Object -ExpandProperty Name -First 1
+
+ $tag = Get-Tag -Category $TagCategory -Name $VMName -ErrorAction Ignore
+ if (-not $tag)
+ {
+ $tag = New-Tag -Name $VMName -Category $TagCategory
+ }
+
+ New-TagAssignment -Tag $tag -Entity $buildDatastore | Out-Null
+
+ # Wait for 60 seconds to check if any other tags are assigned to the same datastore
+ Start-Sleep -Seconds 60
+ # Take only first 2 tags, all the others will go to the next round
+ $tagAssignments = (Get-TagAssignment -Entity $buildDatastore).Tag.Name | Select-Object -First 2
+ $isAllow = $tagAssignments -contains $VMName
+
+ if ($isAllow)
+ {
+ Write-Host "Datastore selected successfully"
+ Write-Host "##vso[task.setvariable variable=buildDatastore;issecret=true]$buildDatastore"
+ return
+ }
+
+ # Remove the tag if datastore wasn't selected
+ Remove-Tag $tag -Confirm:$false
+
+ $retries--
+ if ($retries -le 0)
+ {
+ Write-Host "##vso[task.LogIssue type=error;]No datastores found for the condition"
+ exit 1
+ }
+
+ Write-Host "Datastore select failed, $retries left"
+ Select-DataStore -VMName $VMName -TagCategory $TagCategory -Retries $retries
+}
+
# Connection to a vCenter Server system
Connect-VCServer
# Get a target datastore for current deployment
-# 1. Name starts with ds-local-Datastore
-# 2. FreespaceGB > 400 Gb
-# 3. VM count on a datastore < 2
-$templateDatastore = "ds-local-Datastore-*"
-$thresholdInGb = 400
-$vmCount = 2
-$allDatastores = Get-Datastore -Name $templateDatastore | Where-Object { $_.State -eq "Available" }
-$buildDatastore = $allDatastores | Where-Object { $_.FreeSpaceGB -ge $thresholdInGb } | Where-Object {
- $vmOnDatastore = @((Get-ChildItem -Path $_.DatastoreBrowserPath).Name -notmatch "^\.").Count
- $vmOnDatastore -lt $vmCount
- } | Select-Object -ExpandProperty Name -First 1
-
-if ($buildDatastore)
-{
- Write-Host "Datastore selected successfully"
- Write-Host "##vso[task.setvariable variable=buildDatastore;issecret=true]$buildDatastore"
-}
-else
-{
- Write-Host "##vso[task.LogIssue type=error;]No datastores found for the condition"
- exit 1
-}
\ No newline at end of file
+Select-DataStore -VMName $VMName -TagCategory $TagCategory
diff --git a/images.CI/shebang-linter.ps1 b/images.CI/shebang-linter.ps1
new file mode 100644
index 00000000..a3862f65
--- /dev/null
+++ b/images.CI/shebang-linter.ps1
@@ -0,0 +1,43 @@
+$ErrorActionPreference = "Stop"
+
+function Validate-Scripts {
+ Param (
+ [Parameter(Mandatory=$true)]
+ [string[]]$Path,
+ [Parameter(Mandatory=$true)]
+ [string]$ExpectedShebang
+ )
+ $ScriptWithoutShebangLine = @()
+ Get-ChildItem $path -Recurse -File -Filter "*.sh" | ForEach-Object {
+ $relativePath = Resolve-Path $_.FullName -Relative
+ $shebangLine = Get-Content -Path $_.FullName | Select-Object -First 1
+ if ($shebangLine -eq $ExpectedShebang) {
+ Write-Host "[+] '$relativePath'"
+ }
+ else {
+ Write-Host "[-] '$relativePath'"
+ $ScriptWithoutShebangLine += $relativePath
+ }
+ }
+ return $ScriptWithoutShebangLine
+}
+
+$PathUbuntu = "./images/linux/scripts"
+$PathMacOS = "./images/macos/provision"
+$PatternUbuntu = "#!/bin/bash -e"
+$PatternMacOS = "#!/bin/bash -e -o pipefail"
+$ScriptsWithBrokenShebang = @()
+$ScriptsWithBrokenShebang += Validate-Scripts -Path $PathUbuntu -ExpectedShebang $PatternUbuntu
+$ScriptsWithBrokenShebang += Validate-Scripts -Path $PathMacOS -ExpectedShebang $PatternMacOS
+if ($ScriptsWithBrokenShebang.Length -gt 0) {
+ Write-Host "`n`n`n##[error] The following scripts have incorrect shebang:"
+ $ScriptsWithBrokenShebang | ForEach-Object {
+ Write-Host "##[error] '$_'"
+ }
+ Write-Host "`n`n##[error] Expected shebang for scripts in 'images/linux' folder is '$PatternUbuntu'"
+ Write-Host "##[error] Expected shebang for scripts in 'images/macos' folder is '$PatternMacOS'"
+ exit 1
+ else {
+ Write-Host "All scripts have correct shebang."
+ }
+}
\ No newline at end of file
diff --git a/images/linux/Ubuntu1604-README.md b/images/linux/Ubuntu1604-README.md
index b4513e8b..c06b5d7b 100644
--- a/images/linux/Ubuntu1604-README.md
+++ b/images/linux/Ubuntu1604-README.md
@@ -1,10 +1,11 @@
| Announcements |
|-|
+| [.NET 5.0 will become a default .NET version on November, 10](https://github.com/actions/virtual-environments/issues/1891) |
+| [[Ubuntu] [Windows] Boost 1.69.0 will be deprecated on November, 10](https://github.com/actions/virtual-environments/issues/1847) |
| [Ubuntu-latest workflows will use Ubuntu-20.04](https://github.com/actions/virtual-environments/issues/1816) |
-| [Obsolete Android build-tools packages will be removed from Ubuntu images on October, 20](https://github.com/actions/virtual-environments/issues/1743) |
***
# Ubuntu 16.04.7 LTS
-- Image Version: 20201015.1
+- Image Version: 20201026.1
## Installed Software
### Language and Runtime
@@ -36,27 +37,28 @@
- Ant 1.9.6
- Gradle 6.7
- Maven 3.6.3
-- Sbt 1.4.0
+- Sbt 1.4.1
### Tools
- 7-Zip 9.20
- Ansible 2.9.14
-- AzCopy10 10.6.0 (available by `azcopy10` alias)
+- apt-fast 1.9.10
+- AzCopy10 10.6.1 (available by `azcopy10` alias)
- AzCopy7 7.3.0 (available by `azcopy` alias)
-- Bazel 3.6.0
-- Bazelisk 1.7.2
+- Bazel 3.7.0
+- Bazelisk 1.7.3
- CMake 3.17.0
- CodeQL Action Bundle 2.3.0
- curl 7.47.0
- Docker Compose 1.27.4
- Docker-Buildx 0.4.2
- Docker-Moby 19.03.13
-- Git 2.28.0
+- Git 2.29.0
- Git LFS 2.12.0
- Git-ftp 1.0.2
-- Google Cloud SDK 314.0.0
+- Google Cloud SDK 315.0.0
- Haveged 1.9.1
-- Heroku 7.46.0
+- Heroku 7.46.2
- HHVM (HipHop VM) 4.56.1
- jq 1.5
- Kind 0.9.0
@@ -65,17 +67,17 @@
- Leiningen 2.9.4
- m4 1.4.17
- Mercurial 4.4.1
-- Minikube 1.14.0
+- Minikube 1.14.1
- Newman 5.2.0
- nvm 0.36.0
- Packer 1.6.4
- PhantomJS 2.1.1
-- Pulumi 2.12.0
+- Pulumi 2.12.1
- R 4.0.3
- Sphinx Open Source Search Server 2.2.9
- SVN 1.9.3
- Swig 3.0.8
-- Terraform 0.13.4
+- Terraform 0.13.5
- unzip 6.00
- wget 1.17.1
- yamllint 1.2.1
@@ -84,14 +86,14 @@
### CLI Tools
- Alibaba Cloud CLI 3.0.60
-- AWS CLI 1.18.158
+- AWS CLI 1.18.164
- AWS CLI Session manager plugin 1.2.7.0
- AWS SAM CLI 1.6.2
- Azure CLI (azure-cli) 2.13.0
- Azure CLI (azure-devops) 0.18.0
- GitHub CLI 1.1.0
- Hub CLI 2.14.2
-- Netlify CLI 2.65.6
+- Netlify CLI 2.65.7
- oc CLI 4.5.0
- ORAS CLI 0.8.1
- Vercel CLI 20.1.2
@@ -99,16 +101,16 @@
### Java
| Version | Vendor | Environment Variable |
| ------------------- | ------------ | -------------------- |
-| 1.7.0_272 | Zulu | JAVA_HOME_7_X64 |
-| 1.8.0_265 (default) | AdoptOpenJDK | JAVA_HOME_8_X64 |
-| 11.0.8 | AdoptOpenJDK | JAVA_HOME_11_X64 |
+| 1.7.0_282 | Zulu | JAVA_HOME_7_X64 |
+| 1.8.0_272 (default) | AdoptOpenJDK | JAVA_HOME_8_X64 |
+| 11.0.9 | AdoptOpenJDK | JAVA_HOME_11_X64 |
| 12.0.2 | AdoptOpenJDK | JAVA_HOME_12_X64 |
### PHP
| Tool | Version |
| -------- | ----------------------------------------- |
| PHP | 5.6.40 7.0.33 7.1.33 7.2.34 7.3.23 7.4.11 |
-| Composer | 1.10.15 |
+| Composer | 2.0.2 |
| PHPUnit | 7.5.20 |
### Haskell
@@ -131,7 +133,7 @@
- Rustfmt 1.4.20
### Browsers and Drivers
-- Google Chrome 86.0.4240.75
+- Google Chrome 86.0.4240.111
- ChromeDriver 86.0.4240.22
- Mozilla Firefox 81.0.2
- Geckodriver 0.27.0
@@ -160,7 +162,7 @@
- 2.4.10
- 2.5.8
- 2.6.6
-- 2.7.1
+- 2.7.2
#### Python
- 2.7.18
@@ -178,7 +180,7 @@
- 8.17.0
- 10.22.1
- 12.19.0
-- 14.13.1
+- 14.14.0
#### Go
- 1.11.13
diff --git a/images/linux/Ubuntu1804-README.md b/images/linux/Ubuntu1804-README.md
index 0029ea31..68dd9422 100644
--- a/images/linux/Ubuntu1804-README.md
+++ b/images/linux/Ubuntu1804-README.md
@@ -1,10 +1,11 @@
| Announcements |
|-|
+| [.NET 5.0 will become a default .NET version on November, 10](https://github.com/actions/virtual-environments/issues/1891) |
+| [[Ubuntu] [Windows] Boost 1.69.0 will be deprecated on November, 10](https://github.com/actions/virtual-environments/issues/1847) |
| [Ubuntu-latest workflows will use Ubuntu-20.04](https://github.com/actions/virtual-environments/issues/1816) |
-| [Obsolete Android build-tools packages will be removed from Ubuntu images on October, 20](https://github.com/actions/virtual-environments/issues/1743) |
***
# Ubuntu 18.04.5 LTS
-- Image Version: 20201015.1
+- Image Version: 20201026.1
## Installed Software
### Language and Runtime
@@ -29,7 +30,7 @@
- Npm 6.14.8
- Pip 9.0.1
- Pip3 9.0.1
-- Pipx 0.15.5.1
+- Pipx 0.15.6.0
- Vcpkg 2020.06.15
- Yarn 1.22.5
@@ -37,15 +38,16 @@
- Ant 1.10.5
- Gradle 6.7
- Maven 3.6.3
-- Sbt 1.4.0
+- Sbt 1.4.1
### Tools
- 7-Zip 16.02
- Ansible 2.9.14
-- AzCopy10 10.6.0 (available by `azcopy10` alias)
+- apt-fast 1.9.10
+- AzCopy10 10.6.1 (available by `azcopy10` alias)
- AzCopy7 7.3.0 (available by `azcopy` alias)
-- Bazel 3.6.0
-- Bazelisk 1.7.2
+- Bazel 3.7.0
+- Bazelisk 1.7.3
- Buildah 1.16.4
- CMake 3.17.0
- CodeQL Action Bundle 2.3.0
@@ -53,13 +55,13 @@
- Docker Compose 1.27.4
- Docker-Buildx 0.4.2
- Docker-Moby 19.03.13
-- Git 2.28.0
+- Git 2.29.0
- Git LFS 2.12.0
- Git-ftp 1.3.1
-- Google Cloud SDK 314.0.0
+- Google Cloud SDK 315.0.0
- Haveged 1.9.1
-- Heroku 7.46.0
-- HHVM (HipHop VM) 4.79.0
+- Heroku 7.46.2
+- HHVM (HipHop VM) 4.80.0
- jq 1.5
- Kind 0.9.0
- Kubectl 1.19.3
@@ -67,19 +69,19 @@
- Leiningen 2.9.4
- m4 1.4.18
- Mercurial 4.5.3
-- Minikube 1.14.0
+- Minikube 1.14.1
- Newman 5.2.0
- nvm 0.36.0
- Packer 1.6.4
- PhantomJS 2.1.1
- Podman 2.1.1
-- Pulumi 2.12.0
+- Pulumi 2.12.1
- R 4.0.3
- Skopeo 1.2.0
- Sphinx Open Source Search Server 2.2.11
- SVN 1.9.7
- Swig 3.0.12
-- Terraform 0.13.4
+- Terraform 0.13.5
- unzip 6.00
- wget 1.19.4
- yamllint 1.25.0
@@ -88,14 +90,14 @@
### CLI Tools
- Alibaba Cloud CLI 3.0.60
-- AWS CLI 1.18.157
-- AWS CLI Session manager plugin 1.1.61.0
+- AWS CLI 1.18.164
+- AWS CLI Session manager plugin 1.2.7.0
- AWS SAM CLI 1.6.2
- Azure CLI (azure-cli) 2.13.0
- Azure CLI (azure-devops) 0.18.0
- GitHub CLI 1.1.0
- Hub CLI 2.14.2
-- Netlify CLI 2.65.5
+- Netlify CLI 2.65.7
- oc CLI 4.5.0
- ORAS CLI 0.8.1
- Vercel CLI 20.1.2
@@ -103,22 +105,22 @@
### Java
| Version | Vendor | Environment Variable |
| ------------------- | ------------ | -------------------- |
-| 1.7.0_272 | Zulu | JAVA_HOME_7_X64 |
-| 1.8.0_265 (default) | AdoptOpenJDK | JAVA_HOME_8_X64 |
-| 11.0.8 | AdoptOpenJDK | JAVA_HOME_11_X64 |
+| 1.7.0_282 | Zulu | JAVA_HOME_7_X64 |
+| 1.8.0_272 (default) | AdoptOpenJDK | JAVA_HOME_8_X64 |
+| 11.0.9 | AdoptOpenJDK | JAVA_HOME_11_X64 |
| 12.0.2 | AdoptOpenJDK | JAVA_HOME_12_X64 |
### PHP
| Tool | Version |
| -------- | --------------------------- |
| PHP | 7.1.33 7.2.34 7.3.23 7.4.11 |
-| Composer | 1.10.15 |
+| Composer | 2.0.2 |
| PHPUnit | 7.5.20 |
### Haskell
- GHC 8.10.2
- Cabal 3.4.0.0
-- Stack 2.3.3
+- Stack 2.5.1
### Rust Tools
- Rust 1.47.0
@@ -135,9 +137,9 @@
- Rustfmt 1.4.20
### Browsers and Drivers
-- Google Chrome 86.0.4240.75
+- Google Chrome 86.0.4240.111
- ChromeDriver 86.0.4240.22
-- Mozilla Firefox 81.0
+- Mozilla Firefox 82.0
- Geckodriver 0.27.0
### .NET Core SDK
@@ -164,7 +166,7 @@
- 2.4.10
- 2.5.8
- 2.6.6
-- 2.7.1
+- 2.7.2
#### Python
- 2.7.18
@@ -182,7 +184,7 @@
- 8.17.0
- 10.22.1
- 12.19.0
-- 14.13.1
+- 14.14.0
#### Go
- 1.11.13
diff --git a/images/linux/Ubuntu2004-README.md b/images/linux/Ubuntu2004-README.md
index b192a23a..cd5aa841 100644
--- a/images/linux/Ubuntu2004-README.md
+++ b/images/linux/Ubuntu2004-README.md
@@ -1,10 +1,11 @@
| Announcements |
|-|
+| [.NET 5.0 will become a default .NET version on November, 10](https://github.com/actions/virtual-environments/issues/1891) |
+| [[Ubuntu] [Windows] Boost 1.69.0 will be deprecated on November, 10](https://github.com/actions/virtual-environments/issues/1847) |
| [Ubuntu-latest workflows will use Ubuntu-20.04](https://github.com/actions/virtual-environments/issues/1816) |
-| [Obsolete Android build-tools packages will be removed from Ubuntu images on October, 20](https://github.com/actions/virtual-environments/issues/1743) |
***
# Ubuntu 20.04.1 LTS
-- Image Version: 20201015.1
+- Image Version: 20201026.1
## Installed Software
### Language and Runtime
@@ -29,7 +30,7 @@
- Npm 6.14.8
- Pip 20.0.2
- Pip3 20.0.2
-- Pipx 0.15.5.1
+- Pipx 0.15.6.0
- Vcpkg 2020.06.15
- Yarn 1.22.5
@@ -37,15 +38,16 @@
- Ant 1.10.7
- Gradle 6.7
- Maven 3.6.3
-- Sbt 1.4.0
+- Sbt 1.4.1
### Tools
- 7-Zip 16.02
- Ansible 2.9.6
-- AzCopy10 10.6.0 (available by `azcopy10` alias)
+- apt-fast 1.9.10
+- AzCopy10 10.6.1 (available by `azcopy10` alias)
- AzCopy7 7.3.0 (available by `azcopy` alias)
-- Bazel 3.6.0
-- Bazelisk 1.7.2
+- Bazel 3.7.0
+- Bazelisk 1.7.3
- Buildah 1.16.4
- CMake 3.17.0
- CodeQL Action Bundle 2.3.0
@@ -53,13 +55,13 @@
- Docker Compose 1.27.4
- Docker-Buildx 0.4.2
- Docker-Moby 19.03.13
-- Git 2.28.0
+- Git 2.29.0
- Git LFS 2.12.0
- Git-ftp 1.6.0
-- Google Cloud SDK 314.0.0
+- Google Cloud SDK 315.0.0
- Haveged 1.9.1
-- Heroku 7.46.0
-- HHVM (HipHop VM) 4.79.0
+- Heroku 7.46.2
+- HHVM (HipHop VM) 4.80.0
- jq 1.6
- Kind 0.9.0
- Kubectl 1.19.3
@@ -67,19 +69,19 @@
- Leiningen 2.9.4
- m4 1.4.18
- Mercurial 5.3.1
-- Minikube 1.14.0
+- Minikube 1.14.1
- Newman 5.2.0
- nvm 0.36.0
- Packer 1.6.4
- PhantomJS 2.1.1
- Podman 2.1.1
-- Pulumi 2.12.0
+- Pulumi 2.12.1
- R 4.0.3
- Skopeo 1.2.0
- Sphinx Open Source Search Server 2.2.11
- SVN 1.13.0
- Swig 4.0.1
-- Terraform 0.13.4
+- Terraform 0.13.5
- unzip 6.00
- wget 1.20.3
- yamllint 1.25.0
@@ -88,14 +90,14 @@
### CLI Tools
- Alibaba Cloud CLI 3.0.60
-- AWS CLI 2.0.56
-- AWS CLI Session manager plugin 1.1.61.0
+- AWS CLI 2.0.59
+- AWS CLI Session manager plugin 1.2.7.0
- AWS SAM CLI 1.6.2
- Azure CLI (azure-cli) 2.13.0
- Azure CLI (azure-devops) 0.18.0
- GitHub CLI 1.1.0
- Hub CLI 2.14.2
-- Netlify CLI 2.65.5
+- Netlify CLI 2.65.7
- oc CLI 4.5.0
- ORAS CLI 0.8.1
- Vercel CLI 20.1.2
@@ -103,20 +105,20 @@
### Java
| Version | Vendor | Environment Variable |
| ---------------- | ------------ | -------------------- |
-| 1.8.0_265 | AdoptOpenJDK | JAVA_HOME_8_X64 |
-| 11.0.8 (default) | AdoptOpenJDK | JAVA_HOME_11_X64 |
+| 1.8.0_272 | AdoptOpenJDK | JAVA_HOME_8_X64 |
+| 11.0.9 (default) | AdoptOpenJDK | JAVA_HOME_11_X64 |
### PHP
| Tool | Version |
| -------- | ------- |
| PHP | 7.4.11 |
-| Composer | 1.10.15 |
+| Composer | 2.0.2 |
| PHPUnit | 7.5.20 |
### Haskell
- GHC 8.10.2
- Cabal 3.4.0.0
-- Stack 2.3.3
+- Stack 2.5.1
### Rust Tools
- Rust 1.47.0
@@ -133,9 +135,9 @@
- Rustfmt 1.4.20
### Browsers and Drivers
-- Google Chrome 86.0.4240.75
+- Google Chrome 86.0.4240.111
- ChromeDriver 86.0.4240.22
-- Mozilla Firefox 81.0
+- Mozilla Firefox 82.0
- Geckodriver 0.27.0
### .NET Core SDK
@@ -161,7 +163,7 @@
#### Ruby
- 2.5.8
- 2.6.6
-- 2.7.1
+- 2.7.2
#### Python
- 2.7.18
@@ -179,7 +181,7 @@
- 8.17.0
- 10.22.1
- 12.19.0
-- 14.13.1
+- 14.14.0
#### Go
- 1.14.10
diff --git a/images/linux/post-generation/homebrew-permissions.sh b/images/linux/post-generation/homebrew-permissions.sh
index 1dbd043e..edd15fb7 100644
--- a/images/linux/post-generation/homebrew-permissions.sh
+++ b/images/linux/post-generation/homebrew-permissions.sh
@@ -2,10 +2,13 @@
# Fix permissions for Homebrew
# https://github.com/actions/virtual-environments/issues/1568
+
brew_folder="/home/linuxbrew/"
+homebrew_user=$(cut -d: -f1 /etc/passwd | tail -1)
+
if [ -d "$brew_folder" ]; then
brew_folder_owner=$(ls -ld $brew_folder | awk '{print $3}')
- if [ "$USER" != "$brew_folder_owner" ]; then
- chown "$USER":docker -R $brew_folder
+ if [ "$homebrew_user" != "$brew_folder_owner" ]; then
+ chown "$homebrew_user":docker -R $brew_folder
fi
fi
diff --git a/images/linux/post-generation/rust-permissions.sh b/images/linux/post-generation/rust-permissions.sh
index 6673686b..aff56ca1 100644
--- a/images/linux/post-generation/rust-permissions.sh
+++ b/images/linux/post-generation/rust-permissions.sh
@@ -2,10 +2,13 @@
# Fix permissions for the Rust folder
# https://github.com/actions/virtual-environments/issues/572
+
rust_folder="/usr/share/rust"
+rust_user=$(cut -d: -f1 /etc/passwd | tail -1)
+
if [ -d "$rust_folder" ]; then
rust_folder_owner=$(ls -ld $rust_folder | awk '{print $3}')
- if [ "$USER" != "$rust_folder_owner" ]; then
- chown "$USER":docker -R $rust_folder
+ if [ "$rust_user" != "$rust_folder_owner" ]; then
+ chown "$rust_user":docker -R $rust_folder
fi
fi
diff --git a/images/linux/scripts/base/apt.sh b/images/linux/scripts/base/apt.sh
index 8afcbe8d..1efbb672 100644
--- a/images/linux/scripts/base/apt.sh
+++ b/images/linux/scripts/base/apt.sh
@@ -1,13 +1,23 @@
-#!/bin/bash
+#!/bin/bash -e
export DEBIAN_FRONTEND=noninteractive
apt-get -yq update
apt-get -yq dist-upgrade
-systemctl disable apt-daily.service
+
+# Stop and disable apt-daily upgrade services;
+systemctl stop apt-daily.timer
systemctl disable apt-daily.timer
+systemctl disable apt-daily.service
+systemctl stop apt-daily-upgrade.timer
systemctl disable apt-daily-upgrade.timer
systemctl disable apt-daily-upgrade.service
+# This step should completely disable any automatic updates except manual
+sudo sed -i 's/APT::Periodic::Update-Package-Lists "1"/APT::Periodic::Update-Package-Lists "0"/' /etc/apt/apt.conf.d/20auto-upgrades
+
+# Enable retry logic for apt up to 10 times
+echo "APT::Acquire::Retries \"10\";" > /etc/apt/apt.conf.d/80-retries
+
# Configure apt to always assume Y
echo "APT::Get::Assume-Yes \"true\";" > /etc/apt/apt.conf.d/90assumeyes
diff --git a/images/linux/scripts/base/repos.sh b/images/linux/scripts/base/repos.sh
index 4ecd2028..9005d32a 100644
--- a/images/linux/scripts/base/repos.sh
+++ b/images/linux/scripts/base/repos.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e
################################################################################
## File: repos.sh
## Desc: Installs official Microsoft package repos for the distribution
diff --git a/images/linux/scripts/helpers/etc-environment.sh b/images/linux/scripts/helpers/etc-environment.sh
index 24801723..eba0ecc0 100644
--- a/images/linux/scripts/helpers/etc-environment.sh
+++ b/images/linux/scripts/helpers/etc-environment.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e
################################################################################
## File: etc-environment.sh
## Desc: Helper functions for source and modify /etc/environment
diff --git a/images/linux/scripts/helpers/install.sh b/images/linux/scripts/helpers/install.sh
index bb1befe2..e42cd319 100644
--- a/images/linux/scripts/helpers/install.sh
+++ b/images/linux/scripts/helpers/install.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e
################################################################################
## File: install.sh
## Desc: Helper functions for installing tools
diff --git a/images/linux/scripts/helpers/os.sh b/images/linux/scripts/helpers/os.sh
index 9c30c811..8bec8608 100644
--- a/images/linux/scripts/helpers/os.sh
+++ b/images/linux/scripts/helpers/os.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e
################################################################################
## File: install-helpers.sh
## Desc: Helper functions for installing tools
diff --git a/images/linux/scripts/installers/azpowershell.sh b/images/linux/scripts/installers/azpowershell.sh
index a8488af7..47ac5ff3 100644
--- a/images/linux/scripts/installers/azpowershell.sh
+++ b/images/linux/scripts/installers/azpowershell.sh
@@ -15,9 +15,13 @@ else
versions=$(jq -r '.azureModules[] | select(.name | contains("az")) | .versions[]' $toolset)
fi
+# Try to install and update PowerShellGet before the actual installation
+pwsh -Command "Install-Module -Name PowerShellGet -Force"
+pwsh -Command "Update-Module -Name PowerShellGet -Force"
+
# Install Azure CLI (instructions taken from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli)
for version in ${versions[@]}; do
- pwsh -Command "Save-Module -Name Az -LiteralPath /usr/share/az_$version -RequiredVersion $version -Force"
+ pwsh -Command "Save-Module -Name Az -LiteralPath /usr/share/az_$version -RequiredVersion $version -Force -Verbose"
done
# Run tests to determine that the software installed as expected
diff --git a/images/linux/scripts/installers/homebrew.sh b/images/linux/scripts/installers/homebrew.sh
index 865923f2..dd9e8f9e 100644
--- a/images/linux/scripts/installers/homebrew.sh
+++ b/images/linux/scripts/installers/homebrew.sh
@@ -12,9 +12,6 @@ source $HELPER_SCRIPTS/etc-environment.sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
-# Make brew files and directories writable by any user
-sudo chmod -R o+w $HOMEBREW_PREFIX
-
# Update /etc/environemnt
## Put HOMEBREW_* variables
brew shellenv|grep 'export HOMEBREW'|sed -E 's/^export (.*);$/\1/' | sudo tee -a /etc/environment
diff --git a/images/linux/scripts/installers/pipx-packages.sh b/images/linux/scripts/installers/pipx-packages.sh
index 07e1427e..3b625fe4 100644
--- a/images/linux/scripts/installers/pipx-packages.sh
+++ b/images/linux/scripts/installers/pipx-packages.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e
################################################################################
## File: pipx-packages.sh
## Desc: Install tools via pipx
diff --git a/images/linux/scripts/installers/post-deployment.sh b/images/linux/scripts/installers/post-deployment.sh
index 95a2e2fa..d427a172 100644
--- a/images/linux/scripts/installers/post-deployment.sh
+++ b/images/linux/scripts/installers/post-deployment.sh
@@ -24,3 +24,7 @@ then
echo "PATH = $PATH"
exit 1
fi
+
+# Clean yarn and npm cache
+yarn cache clean
+npm cache clean --force
\ No newline at end of file
diff --git a/images/macos/macos-10.15-Readme.md b/images/macos/macos-10.15-Readme.md
index 415b41ba..cfb4e810 100644
--- a/images/macos/macos-10.15-Readme.md
+++ b/images/macos/macos-10.15-Readme.md
@@ -1,18 +1,19 @@
| Announcements |
|-|
+| [.NET 5.0 will become a default .NET version on November, 10](https://github.com/actions/virtual-environments/issues/1891) |
| [macOS 11.0 (Big Sur) is available as a preview 🚀](https://github.com/actions/virtual-environments/issues/1814) |
| [[macOS] Default Ruby version will be changed to 2.7 on October, 26](https://github.com/actions/virtual-environments/issues/1775) |
-| [Default Xcode will be changed to Xcode 12.0 on October, 20](https://github.com/actions/virtual-environments/issues/1712) |
+| [Default Xcode will be changed to Xcode 12.0.1 on October, 20](https://github.com/actions/virtual-environments/issues/1712) |
| [Xcode 11.0, 11.1, 11.4.0 will be deprecated on November, 5](https://github.com/actions/virtual-environments/issues/1688) |
***
# macOS 10.15 info
- System Version: macOS 10.15.7 (19H2)
- Kernel Version: Darwin 19.6.0
-- Image Version: 20201017.1
+- Image Version: 20201026.2
## Installed Software
### Language and Runtime
-- Clang/LLVM 10.0.1
+- Clang/LLVM 11.0.0
- gcc-8 (Homebrew GCC 8.4.0_1) 8.4.0 - available by `gcc-8` alias
- gcc-9 (Homebrew GCC 9.3.0) 9.3.0 - available by `gcc-9` alias
- GNU Fortran (Homebrew GCC 8.4.0_1) 8.4.0 - available by `gfortran-8` alias
@@ -23,9 +24,9 @@
- NVM - Cached node versions: v6.17.1 v8.17.0 v10.22.1 v12.19.0 v13.14.0 v14.14.0
- Python 2.7.17
- Python 3.8.6
-- Ruby 2.6.6p146
+- Ruby 2.7.2p137
- .NET SDK 2.1.300 2.1.301 2.1.302 2.1.401 2.1.402 2.1.403 2.1.500 2.1.502 2.1.503 2.1.504 2.1.505 2.1.506 2.1.507 2.1.602 2.1.603 2.1.604 2.1.607 2.1.700 2.1.701 2.1.801 2.1.802 2.1.803 2.1.804 2.1.805 2.1.806 2.1.807 2.1.808 2.1.809 2.1.810 2.1.811 3.0.100 3.0.101 3.0.102 3.0.103 3.1.100 3.1.101 3.1.200 3.1.201 3.1.300 3.1.301 3.1.302 3.1.401 3.1.402 3.1.403
-- Go 1.15.2
+- Go 1.15.3
- PHP 7.4.11
- julia 1.5.2
@@ -35,14 +36,14 @@
- Pip 20.2.3 (python 3.8)
- Bundler version 2.1.4
- Carthage 0.36.0
-- CocoaPods 1.9.3
-- Homebrew 2.5.6
+- CocoaPods 1.10.0
+- Homebrew 2.5.7
- NPM 6.14.8
- Yarn 1.22.5
- NuGet 5.6.0.6489
- Miniconda 4.8.3
- RubyGems 3.1.4
-- Composer 1.10.15
+- Composer 2.0.2
### Project Management
- Apache Maven 3.6.3
@@ -51,7 +52,7 @@
### Utilities
- Curl 7.73.0
-- Git: 2.28.0
+- Git: 2.29.1
- Git LFS: 2.12.0
- GitHub CLI: 1.1.0
- Hub CLI: 2.14.2
@@ -64,28 +65,28 @@
- psql (PostgreSQL) 13.0
- PostgreSQL 13.0
- aria2 1.35.0
-- azcopy 10.6.0
+- azcopy 10.6.1
- zstd 1.4.5
-- bazel 3.6.0
-- bazelisk 1.7.2
+- bazel 3.7.0
+- bazelisk 1.7.4
- helm v3.3.4+ga61ce56
- mongo v4.4.1
- mongod v4.4.1
- 7-Zip 16.02
- Newman 5.2.0
-- virtualbox 6.1.14r140239
+- virtualbox 6.1.16r140961
- Vagrant 2.2.10
-- GNU parallel 20200722
+- GNU parallel 20201022
### Tools
-- Fastlane 2.163.0
+- Fastlane 2.165.0
- Cmake 3.18.4
- App Center CLI 2.7.2
- Azure CLI 2.13.0
-- AWS CLI 2.0.57
+- AWS CLI 2.0.59
- AWS SAM CLI 1.6.2
-- AWS Session Manager CLI 1.1.61.0
+- AWS Session Manager CLI 1.2.7.0
- Aliyun CLI 3.0.60
- GHCup v0.1.11
- GHC 8.10.2
@@ -99,19 +100,19 @@
### Browsers
- Safari 14.0 (15610.1.28.1.9)
- SafariDriver 14.0 (15610.1.28.1.9)
-- Google Chrome 86.0.4240.80
+- Google Chrome 86.0.4240.111
- ChromeDriver 86.0.4240.22
-- Microsoft Edge 85.0.564.70
-- MSEdgeDriver 85.0.564.70
-- Mozilla Firefox 81.0.2
+- Microsoft Edge 86.0.622.51
+- MSEdgeDriver 86.0.622.51
+- Mozilla Firefox 82.0
- geckodriver 0.27.0
### Java
| Version | Vendor | Environment Variable |
| --------- | ------------ | -------------------- |
| 1.7.0_272 | Zulu | JAVA_HOME_7_X64 |
-| 1.8.0_265 | AdoptOpenJDK | JAVA_HOME_8_X64 |
-| 11.0.8 | AdoptOpenJDK | JAVA_HOME_11_X64 |
+| 1.8.0_272 | AdoptOpenJDK | JAVA_HOME_8_X64 |
+| 11.0.9 | AdoptOpenJDK | JAVA_HOME_11_X64 |
| 12.0.2 | AdoptOpenJDK | JAVA_HOME_12_X64 |
| 13.0.2 | AdoptOpenJDK | JAVA_HOME_13_X64 |
| 14.0.2 | AdoptOpenJDK | JAVA_HOME_14_X64 |
@@ -120,7 +121,7 @@
- 2.4.10
- 2.5.8
- 2.6.6
-- 2.7.1
+- 2.7.2
#### Python
- 2.7.18
@@ -212,21 +213,21 @@
- NUnit 3.6.1
### Xcode
-| Version | Build | Path |
-| -------------- | -------- | ------------------------------ |
-| 12.2 (beta) | 12B5035g | /Applications/Xcode_12.2.app |
-| 12.1 | 12A7403 | /Applications/Xcode_12.1.app |
-| 12.0.1 | 12A7300 | /Applications/Xcode_12.app |
-| 11.7 (default) | 11E801a | /Applications/Xcode_11.7.app |
-| 11.6 | 11E708 | /Applications/Xcode_11.6.app |
-| 11.5 | 11E608c | /Applications/Xcode_11.5.app |
-| 11.4.1 | 11E503a | /Applications/Xcode_11.4.1.app |
-| 11.4 | 11E146 | /Applications/Xcode_11.4.app |
-| 11.3.1 | 11C505 | /Applications/Xcode_11.3.1.app |
-| 11.2.1 | 11B500 | /Applications/Xcode_11.2.1.app |
-| 11.1 | 11A1027 | /Applications/Xcode_11.1.app |
-| 11.0 | 11A420a | /Applications/Xcode_11.app |
-| 10.3 | 10G8 | /Applications/Xcode_10.3.app |
+| Version | Build | Path |
+| ---------------- | -------- | ------------------------------ |
+| 12.2 (beta) | 12B5035g | /Applications/Xcode_12.2.app |
+| 12.1 | 12A7403 | /Applications/Xcode_12.1.app |
+| 12.0.1 (default) | 12A7300 | /Applications/Xcode_12.app |
+| 11.7 | 11E801a | /Applications/Xcode_11.7.app |
+| 11.6 | 11E708 | /Applications/Xcode_11.6.app |
+| 11.5 | 11E608c | /Applications/Xcode_11.5.app |
+| 11.4.1 | 11E503a | /Applications/Xcode_11.4.1.app |
+| 11.4 | 11E146 | /Applications/Xcode_11.4.app |
+| 11.3.1 | 11C505 | /Applications/Xcode_11.3.1.app |
+| 11.2.1 | 11B500 | /Applications/Xcode_11.2.1.app |
+| 11.1 | 11A1027 | /Applications/Xcode_11.1.app |
+| 11.0 | 11A420a | /Applications/Xcode_11.app |
+| 10.3 | 10G8 | /Applications/Xcode_10.3.app |
#### Xcode Support Tools
- xcpretty 0.3.0
diff --git a/images/macos/macos-11.0-Readme.md b/images/macos/macos-11.0-Readme.md
index b4776beb..75189112 100644
--- a/images/macos/macos-11.0-Readme.md
+++ b/images/macos/macos-11.0-Readme.md
@@ -1,6 +1,6 @@
| Announcements |
|-|
-| [[macOS] Built-in Python 2.7 will be used on macOS instead of Homebrew formula on November, 3rd.](https://github.com/actions/virtual-environments/issues/1848) |
+| [.NET 5.0 will become a default .NET version on November, 10](https://github.com/actions/virtual-environments/issues/1891) |
| [macOS 11.0 (Big Sur) is available as a preview 🚀](https://github.com/actions/virtual-environments/issues/1814) |
| [[macOS] Default Ruby version will be changed to 2.7 on October, 26](https://github.com/actions/virtual-environments/issues/1775) |
| [Default Xcode will be changed to Xcode 12.0.1 on October, 20](https://github.com/actions/virtual-environments/issues/1712) |
@@ -9,7 +9,7 @@
# macOS 11.0 info
- System Version: macOS 11.0 (20A5395g)
- Kernel Version: Darwin 20.1.0
-- Image Version: 20201020.1
+- Image Version: 20201024.1
## Installed Software
### Language and Runtime
@@ -34,14 +34,14 @@
- Pip 20.2.3 (python 3.8)
- Bundler version 2.1.4
- Carthage 0.36.0
-- CocoaPods 1.9.3
+- CocoaPods 1.10.0
- Homebrew 2.5.6
- NPM 6.14.8
- Yarn 1.22.5
- NuGet 5.6.0.6489
- Miniconda 4.8.3
- RubyGems 3.1.4
-- Composer 1.10.15
+- Composer 2.0.1
### Project Management
- Apache Maven 3.6.3
@@ -50,7 +50,7 @@
### Utilities
- Curl 7.73.0
-- Git: 2.29.0
+- Git: 2.29.1
- Git LFS: 2.12.0
- GitHub CLI: 1.1.0
- Hub CLI: 2.14.2
@@ -63,10 +63,10 @@
- psql (PostgreSQL) 13.0
- PostgreSQL 13.0
- aria2 1.35.0
-- azcopy 10.6.0
+- azcopy 10.6.1
- zstd 1.4.5
- bazel 3.7.0
-- bazelisk 1.7.3
+- bazelisk 1.7.4
- helm v3.3.4+ga61ce56
- mongo v4.4.1
- mongod v4.4.1
@@ -74,13 +74,13 @@
- Newman 5.2.0
### Tools
-- Fastlane 2.164.0
+- Fastlane 2.165.0
- Cmake 3.18.4
- App Center CLI 2.7.2
- Azure CLI 2.13.0
-- AWS CLI 2.0.57
+- AWS CLI 2.0.59
- AWS SAM CLI 1.6.2
-- AWS Session Manager CLI 1.1.61.0
+- AWS Session Manager CLI 1.2.7.0
- Aliyun CLI 3.0.60
- GHCup v0.1.11
- GHC 8.10.2
@@ -94,24 +94,24 @@
### Browsers
- Safari 14.0.1 (16610.2.8.1.1)
- SafariDriver 14.0.1 (16610.2.8.1.1)
-- Google Chrome 86.0.4240.80
+- Google Chrome 86.0.4240.111
- ChromeDriver 86.0.4240.22
- Microsoft Edge 85.0.564.70
- MSEdgeDriver 85.0.564.70
-- Mozilla Firefox 81.0.2
+- Mozilla Firefox 82.0
- geckodriver 0.27.0
### Java
| Version | Vendor | Environment Variable |
| --------- | ------------ | -------------------- |
-| 1.8.0_265 | AdoptOpenJDK | JAVA_HOME_8_X64 |
-| 11.0.8 | AdoptOpenJDK | JAVA_HOME_11_X64 |
+| 1.8.0_272 | AdoptOpenJDK | JAVA_HOME_8_X64 |
+| 11.0.9 | AdoptOpenJDK | JAVA_HOME_11_X64 |
### Cached Tools
#### Ruby
- 2.4.10
- 2.5.8
- 2.6.6
-- 2.7.1
+- 2.7.2
#### Python
- 3.7.9
@@ -170,7 +170,6 @@
| Version | Build | Path |
| -------------- | -------- | ---------------------------- |
| 12.2 (beta) | 12B5035g | /Applications/Xcode_12.2.app |
-| 12.1 | 12A7403 | /Applications/Xcode_12.1.app |
| 11.7 (default) | 11E801a | /Applications/Xcode_11.7.app |
#### Xcode Support Tools
@@ -180,40 +179,31 @@
#### Installed SDKs
| SDK | SDK Name | Xcode Version |
| ----------------------- | -------------------- | ------------- |
-| macOS 10.15 | macosx10.15 | 11.7, 12.1 |
+| macOS 10.15 | macosx10.15 | 11.7 |
| macOS 11.0 | macosx11.0 | 12.2 |
| iOS 13.7 | iphoneos13.7 | 11.7 |
-| iOS 14.1 | iphoneos14.1 | 12.1 |
| iOS 14.2 | iphoneos14.2 | 12.2 |
| Simulator - iOS 13.7 | iphonesimulator13.7 | 11.7 |
-| Simulator - iOS 14.1 | iphonesimulator14.1 | 12.1 |
| Simulator - iOS 14.2 | iphonesimulator14.2 | 12.2 |
| tvOS 13.4 | appletvos13.4 | 11.7 |
-| tvOS 14.0 | appletvos14.0 | 12.1 |
| tvOS 14.2 | appletvos14.2 | 12.2 |
| Simulator - tvOS 13.4 | appletvsimulator13.4 | 11.7 |
-| Simulator - tvOS 14.0 | appletvsimulator14.0 | 12.1 |
| Simulator - tvOS 14.2 | appletvsimulator14.2 | 12.2 |
| watchOS 6.2 | watchos6.2 | 11.7 |
-| watchOS 7.0 | watchos7.0 | 12.1 |
| watchOS 7.1 | watchos7.1 | 12.2 |
| Simulator - watchOS 6.2 | watchsimulator6.2 | 11.7 |
-| Simulator - watchOS 7.0 | watchsimulator7.0 | 12.1 |
| Simulator - watchOS 7.1 | watchsimulator7.1 | 12.2 |
-| DriverKit 19.0 | driverkit.macosx19.0 | 11.7, 12.1 |
+| DriverKit 19.0 | driverkit.macosx19.0 | 11.7 |
| DriverKit 20.0 | driverkit.macosx20.0 | 12.2 |
#### Installed Simulators
| OS | Xcode Version | Simulators |
| ----------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| iOS 13.7 | 11.7 | iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPad (7th generation)
iPad Air (3rd generation)
iPad Pro (11-inch) (2nd generation)
iPad Pro (12.9-inch) (4th generation)
iPad Pro (9.7-inch) |
-| iOS 14.1 | 12.1 | iPod touch (7th generation)
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12
iPhone 12 mini
iPhone 12 Pro
iPhone 12 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPad (7th generation)
iPad (8th generation)
iPad Air (3rd generation)
iPad Air (4th generation)
iPad Pro (11-inch) (2nd generation)
iPad Pro (12.9-inch) (4th generation)
iPad Pro (9.7-inch) |
| iOS 14.2 | 12.2 | iPod touch (7th generation)
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12
iPhone 12 mini
iPhone 12 Pro
iPhone 12 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPad (7th generation)
iPad (8th generation)
iPad Air (3rd generation)
iPad Air (4th generation)
iPad Pro (11-inch) (2nd generation)
iPad Pro (12.9-inch) (4th generation)
iPad Pro (9.7-inch) |
| tvOS 13.4 | 11.7 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) |
-| tvOS 14.0 | 12.1 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) |
| tvOS 14.2 | 12.2 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) |
| watchOS 6.2 | 11.7 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm |
-| watchOS 7.0 | 12.1 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm
Apple Watch Series 6 - 40mm
Apple Watch Series 6 - 44mm |
| watchOS 7.1 | 12.2 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm
Apple Watch Series 6 - 40mm
Apple Watch Series 6 - 44mm |
### Android
diff --git a/images/macos/provision/assets/select-xamarin-sdk.sh b/images/macos/provision/assets/select-xamarin-sdk.sh
new file mode 100644
index 00000000..0fb4a343
--- /dev/null
+++ b/images/macos/provision/assets/select-xamarin-sdk.sh
@@ -0,0 +1,22 @@
+#!/bin/bash -e -o pipefail
+if [ -z "$1" ]; then
+ echo "No Xamarin SDK specified."
+ exit 0
+fi
+
+XAMARIN_SDK=$1
+
+echo "Set Xamarin SDK to ${XAMARIN_SDK}"
+FOLDERS_LIST=(
+ '/Library/Frameworks/Mono.framework/Versions'
+ '/Library/Frameworks/Xamarin.iOS.framework/Versions'
+ '/Library/Frameworks/Xamarin.Android.framework/Versions'
+ '/Library/Frameworks/Xamarin.Mac.framework/Versions'
+ )
+
+for FOLDER in "${FOLDERS_LIST[@]}"
+do
+ echo "Set Current folder for ${FOLDER}"
+ sudo rm -f ${FOLDER}/Current
+ sudo ln -s ${FOLDER}/${XAMARIN_SDK} ${FOLDER}/Current
+done
\ No newline at end of file
diff --git a/images/macos/provision/bootstrap-provisioner/installNewProvisioner.sh b/images/macos/provision/bootstrap-provisioner/installNewProvisioner.sh
index 79a3afdf..e588c670 100644
--- a/images/macos/provision/bootstrap-provisioner/installNewProvisioner.sh
+++ b/images/macos/provision/bootstrap-provisioner/installNewProvisioner.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
BOOTSTRAP_PATH="$1"
ProvisionerPackageUri="$2"
ProvisionerScriptUri="$3"
diff --git a/images/macos/provision/configuration/add-network-interface-detection.sh b/images/macos/provision/configuration/add-network-interface-detection.sh
index e939f04b..ca9192bf 100755
--- a/images/macos/provision/configuration/add-network-interface-detection.sh
+++ b/images/macos/provision/configuration/add-network-interface-detection.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
# This script was taken from https://github.com/timsutton/osx-vm-templates/blob/master/scripts/add-network-interface-detection.sh
# Distributed by MIT license, license can be found at the bottom of this script
diff --git a/images/macos/provision/configuration/autologin.sh b/images/macos/provision/configuration/autologin.sh
index caa29a6b..02f2f06d 100755
--- a/images/macos/provision/configuration/autologin.sh
+++ b/images/macos/provision/configuration/autologin.sh
@@ -1,3 +1,5 @@
+#!/bin/bash -e -o pipefail
+
# This script was taken from https://github.com/timsutton/osx-vm-templates/blob/master/scripts/autologin.sh
# Distributed by MIT license, license can be found at the bottom of this script
diff --git a/images/macos/provision/configuration/configure-hostname.sh b/images/macos/provision/configuration/configure-hostname.sh
index 477e0980..e0de0bf8 100644
--- a/images/macos/provision/configuration/configure-hostname.sh
+++ b/images/macos/provision/configuration/configure-hostname.sh
@@ -1,8 +1,8 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
# Add script for changing hostname to run on startup to prevent duplicate hostnames across the environment. Hostname and Computername should contain .local in name to avoid name resolution issues
tee -a /usr/local/bin/change_hostname.sh > /dev/null <<\EOF
-#!/bin/bash
+#!/bin/bash -e -o pipefail
name="Mac-$(python -c 'from time import time; print int(round(time() * 1000))')"
scutil --set HostName "${name}.local"
diff --git a/images/macos/provision/configuration/configure-machine.sh b/images/macos/provision/configuration/configure-machine.sh
index 126c5a7c..9b8915af 100644
--- a/images/macos/provision/configuration/configure-machine.sh
+++ b/images/macos/provision/configuration/configure-machine.sh
@@ -1,12 +1,4 @@
-#!/bin/bash
-
-# Enable firewall. SSH and VNC opened. Can't did it at bootstrap step, so placed it here
-defaults write /Library/Preferences/com.apple.alf globalstate -int 1
-
-# Setting correct time zone
-echo "Configuring system time to GMT..."
-rm -f /etc/localtime
-ln -sf /usr/share/zoneinfo/UTC /etc/localtime
+#!/bin/bash -e -o pipefail
echo "Enabling safari driver..."
# https://developer.apple.com/documentation/webkit/testing_with_webdriver_in_safari
diff --git a/images/macos/provision/configuration/configure-ssh.sh b/images/macos/provision/configuration/configure-ssh.sh
index f85e9efa..73095f55 100755
--- a/images/macos/provision/configuration/configure-ssh.sh
+++ b/images/macos/provision/configuration/configure-ssh.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
[[ ! -d ~/.ssh ]] && mkdir ~/.ssh 2>/dev/null
chmod 777 ~/.ssh
diff --git a/images/macos/provision/configuration/disable-auto-updates.sh b/images/macos/provision/configuration/disable-auto-updates.sh
index 3a35f5be..050f7d9a 100755
--- a/images/macos/provision/configuration/disable-auto-updates.sh
+++ b/images/macos/provision/configuration/disable-auto-updates.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
# Disabling automatic updates
sudo softwareupdate --schedule off
diff --git a/images/macos/provision/configuration/finalize-vm.sh b/images/macos/provision/configuration/finalize-vm.sh
index b01b3c23..2cbcc2d3 100644
--- a/images/macos/provision/configuration/finalize-vm.sh
+++ b/images/macos/provision/configuration/finalize-vm.sh
@@ -1,20 +1,33 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
+
+source ~/utils/utils.sh
# Close all finder windows because they can interfere with UI tests
osascript -e 'tell application "Finder" to close windows'
-# Ignore available updates to prevent system pop-ups
-updateName=$(softwareupdate -l | grep "Title: " | awk -F[:,] '{print $2}' | awk '{$1=$1};1')
-if [ ! -z "$updateName" ]; then
- sudo softwareupdate --ignore "$updateName"
+if is_Less_BigSur; then
+ # Ignore available updates to prevent system pop-ups
+ updateName=$(softwareupdate -l | grep "Title: " | awk -F[:,] '{print $2}' | awk '{$1=$1};1') || true
+ if [ ! -z "$updateName" ]; then
+ sudo softwareupdate --ignore "$updateName"
+ fi
fi
# Put documentation to $HOME root
cp $HOME/image-generation/output/software-report/systeminfo.txt $HOME/image-generation/output/software-report/systeminfo.md $HOME/
+# Put build vm assets scripts to proper directory
+mkdir -p /usr/local/opt/$USER/scripts
+mv $HOME/image-generation/assets/* /usr/local/opt/$USER/scripts
+
+find /usr/local/opt/$USER/scripts -type f -name "*\.sh" -exec chmod +x {} \;
+
# Clean up npm cache which collected during image-generation
# we have to do that here because `npm install` is run in a few different places during image-generation
npm cache clean --force
+# Clean yarn cache
+yarn cache clean
+
# Clean up temporary directories
rm -rf ~/utils ~/image-generation
\ No newline at end of file
diff --git a/images/macos/provision/configuration/max-files.sh b/images/macos/provision/configuration/max-files.sh
index a6e41f12..cd1df451 100755
--- a/images/macos/provision/configuration/max-files.sh
+++ b/images/macos/provision/configuration/max-files.sh
@@ -1,6 +1,4 @@
-#!/bin/bash
-
-set -e
+#!/bin/bash -e -o pipefail
Launch_Daemons="/Library/LaunchDaemons"
diff --git a/images/macos/provision/configuration/ntpconf.sh b/images/macos/provision/configuration/ntpconf.sh
index 09916cc3..b4f68128 100755
--- a/images/macos/provision/configuration/ntpconf.sh
+++ b/images/macos/provision/configuration/ntpconf.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
echo Additional NTP servers adding into /etc/ntp.conf file...
cat > /etc/ntp.conf << EOF
diff --git a/images/macos/provision/configuration/preimagedata.sh b/images/macos/provision/configuration/preimagedata.sh
index c269a149..8060acb7 100644
--- a/images/macos/provision/configuration/preimagedata.sh
+++ b/images/macos/provision/configuration/preimagedata.sh
@@ -1,4 +1,5 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
+
source ~/utils/utils.sh
imagedata_file="$HOME/imagedata.json"
diff --git a/images/macos/provision/configuration/screensaver-off.sh b/images/macos/provision/configuration/screensaver-off.sh
index c154f8d8..6844792e 100755
--- a/images/macos/provision/configuration/screensaver-off.sh
+++ b/images/macos/provision/configuration/screensaver-off.sh
@@ -1,4 +1,5 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
+
# set screensaver idleTime to 0, to prevent turning screensaver on
macUUID=`ioreg -rd1 -c IOPlatformExpertDevice | grep -i "UUID" | cut -c27-62`
diff --git a/images/macos/provision/configuration/shell-change.sh b/images/macos/provision/configuration/shell-change.sh
index a84216cb..5fb12a03 100644
--- a/images/macos/provision/configuration/shell-change.sh
+++ b/images/macos/provision/configuration/shell-change.sh
@@ -1,3 +1,5 @@
+#!/bin/bash -e -o pipefail
+
echo "Changing shell to bash"
sudo chsh -s /bin/bash $USERNAME
sudo chsh -s /bin/bash root
\ No newline at end of file
diff --git a/images/macos/provision/core/android-toolsets.sh b/images/macos/provision/core/android-toolsets.sh
index 093a133c..2f6139c8 100755
--- a/images/macos/provision/core/android-toolsets.sh
+++ b/images/macos/provision/core/android-toolsets.sh
@@ -1,4 +1,4 @@
-#!/bin/bash -e
+#!/bin/bash -e -o pipefail
source ~/utils/utils.sh
function filter_components_by_version {
diff --git a/images/macos/provision/core/audiodevice.sh b/images/macos/provision/core/audiodevice.sh
index 4a151e3f..ec7d71d9 100644
--- a/images/macos/provision/core/audiodevice.sh
+++ b/images/macos/provision/core/audiodevice.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
echo "install soundflower"
brew cask install soundflower
diff --git a/images/macos/provision/core/aws.sh b/images/macos/provision/core/aws.sh
index 4d98d512..02009449 100644
--- a/images/macos/provision/core/aws.sh
+++ b/images/macos/provision/core/aws.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
echo Installing aws...
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
diff --git a/images/macos/provision/core/azcopy.sh b/images/macos/provision/core/azcopy.sh
index 56b848e9..5098c878 100755
--- a/images/macos/provision/core/azcopy.sh
+++ b/images/macos/provision/core/azcopy.sh
@@ -1,5 +1,4 @@
-#!/bin/bash
-set -e
+#!/bin/bash -e -o pipefail
AZCOPY_DOWNLOAD_URL="https://aka.ms/downloadazcopy-v10-mac"
diff --git a/images/macos/provision/core/build-xcode-symlinks.sh b/images/macos/provision/core/build-xcode-symlinks.sh
index 0cee8df8..60070938 100644
--- a/images/macos/provision/core/build-xcode-symlinks.sh
+++ b/images/macos/provision/core/build-xcode-symlinks.sh
@@ -1,4 +1,4 @@
-set -e
+#!/bin/bash -e -o pipefail
source ~/utils/utils.sh
diff --git a/images/macos/provision/core/chrome.sh b/images/macos/provision/core/chrome.sh
index 203faee7..332a11d1 100644
--- a/images/macos/provision/core/chrome.sh
+++ b/images/macos/provision/core/chrome.sh
@@ -1,5 +1,8 @@
+#!/bin/bash -e -o pipefail
+source ~/utils/utils.sh
+
echo "Installing Chrome..."
-brew cask install google-chrome
+brew_cask_install_ignoring_sha256 "google-chrome"
echo "Installing Chrome Driver"
brew cask install chromedriver
diff --git a/images/macos/provision/core/cocoapods.sh b/images/macos/provision/core/cocoapods.sh
index edf2a85f..d692bf3d 100755
--- a/images/macos/provision/core/cocoapods.sh
+++ b/images/macos/provision/core/cocoapods.sh
@@ -1,4 +1,5 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
+
echo "Installing Cocoapods..."
# Setup the Cocoapods master repo
diff --git a/images/macos/provision/core/commonutils.sh b/images/macos/provision/core/commonutils.sh
index 5a98f004..a479974c 100644
--- a/images/macos/provision/core/commonutils.sh
+++ b/images/macos/provision/core/commonutils.sh
@@ -1,5 +1,4 @@
-#!/bin/sh
-set -e
+#!/bin/bash -e -o pipefail
source ~/utils/utils.sh
@@ -22,7 +21,6 @@ binst_common_utils=(
gh
p7zip
ant
- yamllint
aria2
)
diff --git a/images/macos/provision/core/dotnet.sh b/images/macos/provision/core/dotnet.sh
index 78056488..36df3be9 100755
--- a/images/macos/provision/core/dotnet.sh
+++ b/images/macos/provision/core/dotnet.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
###########################################################################
# The main idea of this script is to automate dotnet installs
@@ -23,7 +23,7 @@ echo "Parsing dotnet SDK (except rc and preview versions) from .json..."
if is_BigSur; then
DOTNET_CHANNELS=(
'https://raw.githubusercontent.com/dotnet/core/master/release-notes/2.1/releases.json'
- 'https://raw.githubusercontent.com/dotnet/core/master/release-notes/3.1/releases.json'
+ 'https://raw.githubusercontent.com/dotnet/core/master/release-notes/3.1/releases.json'
)
elif is_Less_Catalina; then
DOTNET_CHANNELS=(
@@ -33,7 +33,7 @@ else
DOTNET_CHANNELS=(
'https://raw.githubusercontent.com/dotnet/core/master/release-notes/2.1/releases.json'
'https://raw.githubusercontent.com/dotnet/core/master/release-notes/3.0/releases.json'
- 'https://raw.githubusercontent.com/dotnet/core/master/release-notes/3.1/releases.json'
+ 'https://raw.githubusercontent.com/dotnet/core/master/release-notes/3.1/releases.json'
)
fi
diff --git a/images/macos/provision/core/edge.sh b/images/macos/provision/core/edge.sh
index bc19a566..bd0ffedd 100644
--- a/images/macos/provision/core/edge.sh
+++ b/images/macos/provision/core/edge.sh
@@ -1,11 +1,9 @@
+#!/bin/bash -e -o pipefail
+
source ~/utils/utils.sh
echo "Installing Microsoft Edge..."
-# Workaround to install version 85 since webdriver is broken for 86
-cd "$(brew --repo homebrew/homebrew-cask)"
-git checkout 81f9d08d2b9b7557c0178621078cf59d2c5db2bc
brew cask install microsoft-edge
-git checkout master
EDGE_INSTALLATION_PATH="/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge"
EDGE_VERSION=$("$EDGE_INSTALLATION_PATH" --version | cut -d' ' -f 3)
diff --git a/images/macos/provision/core/firefox.sh b/images/macos/provision/core/firefox.sh
index f6a90d61..b9ee1c5e 100644
--- a/images/macos/provision/core/firefox.sh
+++ b/images/macos/provision/core/firefox.sh
@@ -1,3 +1,5 @@
+#!/bin/bash -e -o pipefail
+
echo "Installing Firefox..."
brew cask install firefox
diff --git a/images/macos/provision/core/gcc.sh b/images/macos/provision/core/gcc.sh
index febc0760..fefe20fd 100644
--- a/images/macos/provision/core/gcc.sh
+++ b/images/macos/provision/core/gcc.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
echo "Installing GCC@8 using homebrew..."
brew install gcc@8
diff --git a/images/macos/provision/core/git.sh b/images/macos/provision/core/git.sh
index 55feb92b..d59ebf91 100644
--- a/images/macos/provision/core/git.sh
+++ b/images/macos/provision/core/git.sh
@@ -1,3 +1,5 @@
+#!/bin/bash -e -o pipefail
+
echo Installing Git...
brew install git
diff --git a/images/macos/provision/core/haskell.sh b/images/macos/provision/core/haskell.sh
index 1bc11d91..b7f35e4d 100644
--- a/images/macos/provision/core/haskell.sh
+++ b/images/macos/provision/core/haskell.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
export PATH="$HOME/.ghcup/bin:$PATH"
diff --git a/images/macos/provision/core/miniconda.sh b/images/macos/provision/core/miniconda.sh
index b214b352..876883a6 100644
--- a/images/macos/provision/core/miniconda.sh
+++ b/images/macos/provision/core/miniconda.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
MINICONDA_INSTALLER="/tmp/miniconda.sh"
curl -sL https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -o $MINICONDA_INSTALLER
diff --git a/images/macos/provision/core/mongodb.sh b/images/macos/provision/core/mongodb.sh
index 1b6a5a8d..3a4440d9 100644
--- a/images/macos/provision/core/mongodb.sh
+++ b/images/macos/provision/core/mongodb.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
# MongoDB object-value database
# installs last version of MongoDB Community Edition
diff --git a/images/macos/provision/core/node.sh b/images/macos/provision/core/node.sh
index 840b433f..59e727ce 100644
--- a/images/macos/provision/core/node.sh
+++ b/images/macos/provision/core/node.sh
@@ -1,3 +1,5 @@
+#!/bin/bash -e -o pipefail
+
source ~/utils/utils.sh
node_modules=(
@@ -16,7 +18,6 @@ if is_Less_Catalina; then
echo Installing NPM 3.x.x...
npm install -g npm@3
- npm config set prefix /usr/local
# This step is required to install App Center CLI
echo Installing Omelette...
diff --git a/images/macos/provision/core/nvm.sh b/images/macos/provision/core/nvm.sh
index 527bd4c6..c02ecf43 100755
--- a/images/macos/provision/core/nvm.sh
+++ b/images/macos/provision/core/nvm.sh
@@ -1,5 +1,4 @@
-#!/bin/sh
-
+#!/bin/bash -e -o pipefail
###########################################################################
# The script installs node version manager with node versions 6,8,10 and 12
#
@@ -24,11 +23,8 @@ if [ $? -eq 0 ]; then
nvm alias node12 lts/erbium
nvm alias node13 v13
nvm alias node14 v14
-
- if is_Catalina || is_BigSur; then
- # set system node as default
- nvm alias default system
- fi
+ # set system node as default
+ nvm alias default system
else
echo error
fi
diff --git a/images/macos/provision/core/openjdk.sh b/images/macos/provision/core/openjdk.sh
index ca2c5f01..afca628e 100644
--- a/images/macos/provision/core/openjdk.sh
+++ b/images/macos/provision/core/openjdk.sh
@@ -1,6 +1,4 @@
-#!/bin/sh
-
-set -e
+#!/bin/bash -e -o pipefail
source ~/utils/utils.sh
@@ -37,7 +35,7 @@ JAVA_DEFAULT=$(get_toolset_value '.java.default')
for JAVA_VERSION in "${JAVA_VERSIONS_LIST[@]}"
do
if [[ $JAVA_VERSION == "7" ]]; then
- installAzulJDK "https://cdn.azul.com/zulu/bin/zulu7.40.0.15-ca-jdk7.0.272-macosx_x64.dmg"
+ installAzulJDK "https://cdn.azul.com/zulu/bin/zulu7.42.0.13-ca-jdk7.0.282-macosx_x64.dmg"
else
brew cask install "adoptopenjdk${JAVA_VERSION}"
fi
diff --git a/images/macos/provision/core/openssl.sh b/images/macos/provision/core/openssl.sh
index a058673a..16a317c0 100755
--- a/images/macos/provision/core/openssl.sh
+++ b/images/macos/provision/core/openssl.sh
@@ -1,19 +1,16 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
source ~/utils/utils.sh
-echo "Installing OpenSSL..."
-export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"
-
echo Installing OpenSSL...
-/usr/local/bin/brew install openssl
+brew install openssl
# Install OpenSSL 1.0.2t
# https://www.openssl.org/policies/releasestrat.html - Version 1.0.2 will be supported until 2019-12-31 (LTS)
# To preserve backward compatibility with ruby-toolcache
-/usr/local/bin/brew tap-new local/openssl
-FORMULA_PATH=$(/usr/local/bin/brew extract openssl local/openssl | grep "Homebrew/Library/Taps")
-/usr/local/bin/brew install $FORMULA_PATH
+brew tap-new --no-git local/openssl
+FORMULA_PATH=$(brew extract openssl local/openssl | grep "Homebrew/Library/Taps")
+brew install $FORMULA_PATH
# Set OpenSSL 1.0.2t as default
ln -sf /usr/local/Cellar/openssl@1.0.2t /usr/local/Cellar/openssl
@@ -25,4 +22,4 @@ ln -sf ../Cellar/openssl/1.0.2t /usr/local/opt/openssl
# https://github.com/microsoft/azure-pipelines-agent/blob/master/docs/start/envosx.md
mkdir -p /usr/local/lib/
ln -s /usr/local/opt/openssl@1.0.2t/lib/libcrypto.1.0.0.dylib /usr/local/lib/
-ln -s /usr/local/opt/openssl@1.0.2t/lib/libssl.1.0.0.dylib /usr/local/lib/
\ No newline at end of file
+ln -s /usr/local/opt/openssl@1.0.2t/lib/libssl.1.0.0.dylib /usr/local/lib/
diff --git a/images/macos/provision/core/php.sh b/images/macos/provision/core/php.sh
index 08c19f94..90111448 100644
--- a/images/macos/provision/core/php.sh
+++ b/images/macos/provision/core/php.sh
@@ -1,5 +1,4 @@
-#!/bin/sh
-set -e
+#!/bin/bash -e -o pipefail
echo Installing PHP
brew install php
diff --git a/images/macos/provision/core/pipx-packages.sh b/images/macos/provision/core/pipx-packages.sh
new file mode 100644
index 00000000..47de190f
--- /dev/null
+++ b/images/macos/provision/core/pipx-packages.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -e -o pipefail
+source ~/utils/utils.sh
+
+export PATH="$PATH:/opt/pipx_bin"
+
+toolset=$(get_toolset_path)
+pipx_packages=$(jq -r ".pipx[] .package" $toolset)
+
+for package in $pipx_packages; do
+ python_version=$(jq -r ".pipx[] | select(.package == \"$package\") .python" $toolset)
+ if [ "$python_version" != "null" ]; then
+ python_path="$HOME/hostedtoolcache/Python/$python_version*/x64/bin/python$python_version"
+ echo "Install $package into python $python_path"
+ pipx install $package --python $python_path
+ else
+ echo "Install $package into default python"
+ pipx install $package
+ fi
+done
\ No newline at end of file
diff --git a/images/macos/provision/core/postgresql.sh b/images/macos/provision/core/postgresql.sh
index f69e078a..b5d7ab61 100644
--- a/images/macos/provision/core/postgresql.sh
+++ b/images/macos/provision/core/postgresql.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
#Install latest version of postgresql
brew install postgres
@@ -6,13 +6,21 @@ brew install postgres
#Service postgresql should be started before use.
brew services start postgresql
-#Verify that PostgreSQL is ready for accept incoming connections.
-# exit codes:
-# ready - 0
-# reject - 1
-# connection timeout - 2
-# incorrect credentials or parameters - 3
-pg_isready
+#Verify PostgreSQL is ready for accept incoming connections
+echo "Check PostgreSQL service is running"
+i=10
+COMMAND='pg_isready'
+while [ $i -gt 0 ]; do
+ echo "Check PostgreSQL service status"
+ eval $COMMAND && break
+ ((i--))
+ if [ $i == 0 ]; then
+ echo "PostgreSQL service not ready, all attempts exhausted"
+ exit 1
+ fi
+ echo "PostgreSQL service not ready, wait 10 more sec, attempts left: $i"
+ sleep 10
+done
#Stop postgresql
brew services stop postgresql
\ No newline at end of file
diff --git a/images/macos/provision/core/powershell.sh b/images/macos/provision/core/powershell.sh
index 5717adc7..12beeca6 100644
--- a/images/macos/provision/core/powershell.sh
+++ b/images/macos/provision/core/powershell.sh
@@ -1,3 +1,5 @@
+#!/bin/bash -e -o pipefail
+
source ~/utils/utils.sh
echo Installing Azure CLI...
diff --git a/images/macos/provision/core/pypy.sh b/images/macos/provision/core/pypy.sh
index 5f24cd5f..d55d785a 100644
--- a/images/macos/provision/core/pypy.sh
+++ b/images/macos/provision/core/pypy.sh
@@ -1,10 +1,9 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
################################################################################
## File: pypy.sh
## Desc: Installs PyPy
################################################################################
source ~/utils/utils.sh
-set -e
function InstallPyPy
{
diff --git a/images/macos/provision/core/python.sh b/images/macos/provision/core/python.sh
index 1565ced2..da049319 100755
--- a/images/macos/provision/core/python.sh
+++ b/images/macos/provision/core/python.sh
@@ -1,18 +1,29 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
+
source ~/utils/utils.sh
echo "Installing Python Tooling"
echo "Brew Installing Python 3"
# Workaround to have both 3.8 & 3.9(which required by some brew formulas) in the system, but only 3.8 is linked
-/usr/local/bin/brew install python@3.8
-/usr/local/bin/brew install python@3.9
-/usr/local/bin/brew unlink python@3.9
-/usr/local/bin/brew unlink python@3.8
-/usr/local/bin/brew link python@3.8
+brew install python@3.8
+brew install python@3.9
+brew unlink python@3.9
+brew unlink python@3.8
+brew link python@3.8 --force
echo "Brew Installing Python 2"
# Create local tap with formula due to python2 formula depreciation
-/usr/local/bin/brew tap-new local/python2
-FORMULA_PATH=$(/usr/local/bin/brew extract python@2 local/python2 | grep "Homebrew/Library/Taps")
-/usr/local/bin/brew install $FORMULA_PATH
+brew tap-new --no-git local/python2
+FORMULA_PATH=$(brew extract python@2 local/python2 | grep "Homebrew/Library/Taps")
+brew install $FORMULA_PATH
+
+echo "Installing pipx"
+export PIPX_BIN_DIR=/usr/local/opt/pipx_bin
+export PIPX_HOME=/usr/local/opt/pipx
+
+brew install pipx
+
+echo "export PIPX_BIN_DIR=${PIPX_BIN_DIR}" >> "${HOME}/.bashrc"
+echo "export PIPX_HOME=${PIPX_HOME}" >> "${HOME}/.bashrc"
+echo 'export PATH="$PIPX_BIN_DIR:$PATH"' >> "${HOME}/.bashrc"
diff --git a/images/macos/provision/core/reboot.sh b/images/macos/provision/core/reboot.sh
index a6e44435..e0a2dfb8 100644
--- a/images/macos/provision/core/reboot.sh
+++ b/images/macos/provision/core/reboot.sh
@@ -1,2 +1,3 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
+
shutdown -r now
\ No newline at end of file
diff --git a/images/macos/provision/core/ruby.sh b/images/macos/provision/core/ruby.sh
index 19877de3..61eb33c0 100755
--- a/images/macos/provision/core/ruby.sh
+++ b/images/macos/provision/core/ruby.sh
@@ -1,17 +1,6 @@
-#!/bin/sh
-
-set -e
+#!/bin/bash -e -o pipefail
source ~/utils/utils.sh
echo Installing Ruby...
-if is_Less_BigSur; then
- # We can't install latest ruby 2.7 as a default version related with bug
- # https://github.com/fastlane/fastlane/issues/15397
- /usr/local/bin/brew install ruby@2.6
- ln -sf /usr/local/opt/ruby\@2.6 /usr/local/opt/ruby
-else
- brew install ruby
-fi
-
-
+brew install ruby
diff --git a/images/macos/provision/core/rubygem.sh b/images/macos/provision/core/rubygem.sh
index 83639e47..14f4af7a 100755
--- a/images/macos/provision/core/rubygem.sh
+++ b/images/macos/provision/core/rubygem.sh
@@ -1,4 +1,5 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
+
source ~/utils/utils.sh
echo Updating RubyGems...
diff --git a/images/macos/provision/core/rust.sh b/images/macos/provision/core/rust.sh
index 5ef7675c..de82c7b4 100644
--- a/images/macos/provision/core/rust.sh
+++ b/images/macos/provision/core/rust.sh
@@ -1,6 +1,4 @@
-#!/bin/sh
-
-set -e
+#!/bin/bash -e -o pipefail
echo Installing Rustup...
brew install rustup-init
diff --git a/images/macos/provision/core/stack.sh b/images/macos/provision/core/stack.sh
index 81b41fa8..17c5ecd9 100644
--- a/images/macos/provision/core/stack.sh
+++ b/images/macos/provision/core/stack.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
echo "Get the latest Stack version..."
StackRelease=$(curl -s "https://api.github.com/repos/commercialhaskell/stack/releases/latest")
diff --git a/images/macos/provision/core/toolcache-high-sierra.sh b/images/macos/provision/core/toolcache-high-sierra.sh
index 61a3cc8c..9a67418b 100644
--- a/images/macos/provision/core/toolcache-high-sierra.sh
+++ b/images/macos/provision/core/toolcache-high-sierra.sh
@@ -1,7 +1,6 @@
-#!/bin/sh
-
+#!/bin/bash -e -o pipefail
###########################################################################
-# The script downloads macos hosted tool cache for several Python versions
+# The script downloads macos hosted tool cache for several Python versions
# and installs them onto the system
#
###########################################################################
diff --git a/images/macos/provision/core/toolcache.sh b/images/macos/provision/core/toolcache.sh
index eb6dc905..dab45deb 100755
--- a/images/macos/provision/core/toolcache.sh
+++ b/images/macos/provision/core/toolcache.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
# Download hosted tool cache with npm
NPM_FEED="npm.pkg.github.com"
diff --git a/images/macos/provision/core/vcpkg.sh b/images/macos/provision/core/vcpkg.sh
index 289d7ba4..260f2c2a 100644
--- a/images/macos/provision/core/vcpkg.sh
+++ b/images/macos/provision/core/vcpkg.sh
@@ -1,6 +1,5 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
-set -e
source ~/utils/utils.sh
# Set env variable for vcpkg
diff --git a/images/macos/provision/core/vsmac.sh b/images/macos/provision/core/vsmac.sh
index 20a8efd4..f0c498fc 100644
--- a/images/macos/provision/core/vsmac.sh
+++ b/images/macos/provision/core/vsmac.sh
@@ -1,4 +1,5 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
+
source ~/utils/utils.sh
source ~/utils/xamarin-utils.sh
@@ -22,9 +23,6 @@ echo "Moving Visual Studio to /Applications/..."
pushd $TMPMOUNT
tar cf - "./Visual Studio.app" | tar xf - -C /Applications/
-echo "Launching vstools..."
-/Applications/Visual\ Studio.app/Contents/MacOS/vstool
-
popd
sudo hdiutil detach "$TMPMOUNT"
sudo rm -rf "$TMPMOUNT"
\ No newline at end of file
diff --git a/images/macos/provision/core/xamarin-android-ndk.sh b/images/macos/provision/core/xamarin-android-ndk.sh
index 35e4d006..d5b23ebb 100644
--- a/images/macos/provision/core/xamarin-android-ndk.sh
+++ b/images/macos/provision/core/xamarin-android-ndk.sh
@@ -1,4 +1,5 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
+
source ~/utils/utils.sh
ANDROID_HOME=$HOME/Library/Android/sdk
diff --git a/images/macos/provision/core/xamarin.sh b/images/macos/provision/core/xamarin.sh
index 0f0801d7..18eef321 100755
--- a/images/macos/provision/core/xamarin.sh
+++ b/images/macos/provision/core/xamarin.sh
@@ -1,4 +1,5 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
+
source ~/utils/utils.sh
source ~/utils/xamarin-utils.sh
@@ -8,6 +9,7 @@ XAMARIN_MAC_VERSIONS=($(get_toolset_value '.xamarin."mac-versions" | reverse | .
XAMARIN_ANDROID_VERSIONS=($(get_toolset_value '.xamarin."android-versions" | reverse | .[]'))
LATEST_SDK_SYMLINK=$(get_toolset_value '.xamarin.bundles[0].symlink')
CURRENT_SDK_SYMLINK=$(get_toolset_value '.xamarin."bundle-default"')
+DEFAULT_XCODE_VERSION=$(get_default_xcode_from_toolset)
if [ "$CURRENT_SDK_SYMLINK" == "latest" ]; then
CURRENT_SDK_SYMLINK=$LATEST_SDK_SYMLINK
@@ -63,8 +65,10 @@ createBundleLink $CURRENT_SDK_SYMLINK "Current"
# Fix nuget in some mono versions because of known bugs
#
-# Fix Mono issue with default nuget: https://github.com/mono/mono/issues/17637
-installNuget "6.4.0" "5.3.1"
+if is_Less_BigSur; then
+ # Fix Mono issue with default nuget: https://github.com/mono/mono/issues/17637
+ installNuget "6.4.0" "5.3.1"
+fi
if is_Less_Catalina; then
installNuget "4.8.1" "4.3.0"
@@ -79,3 +83,8 @@ popd
echo "Clean up packages..."
sudo rm -rf "$TMPMOUNT"
+
+# Fix Xamarin issue with Xcode symlink: https://github.com/xamarin/xamarin-macios/issues/9960
+PREFERENCES_XAMARIN_DIR="${HOME}/Library/Preferences/Xamarin"
+mkdir -p $PREFERENCES_XAMARIN_DIR
+/usr/libexec/PlistBuddy -c "add :AppleSdkRoot string /Applications/Xcode_${DEFAULT_XCODE_VERSION}.app" $PREFERENCES_XAMARIN_DIR/Settings.plist
diff --git a/images/macos/provision/core/xcode-postbuild.sh b/images/macos/provision/core/xcode-postbuild.sh
index bf7ba387..6afd42c2 100644
--- a/images/macos/provision/core/xcode-postbuild.sh
+++ b/images/macos/provision/core/xcode-postbuild.sh
@@ -1,11 +1,11 @@
-#!/bin/bash
+#!/bin/bash -e -o pipefail
source ~/utils/utils.sh
XCODE_LIST=($(get_xcode_list_from_toolset))
DEFAULT_XCODE_VERSION=$(get_default_xcode_from_toolset)
# https://github.com/microsoft/appcenter/issues/847
-# Assets.xcassets : error : CoreData: error: (6922) I/O error for database
+# Assets.xcassets : error : CoreData: error: (6922) I/O error for database
# at $HOME/Library/Developer/Xcode/UserData/IB Support/Simulator Devices/{GUID}
echo "Erase a device's contents and settings:"
for XCODE_VERSION in "${XCODE_LIST[@]}"
@@ -15,6 +15,11 @@ do
#add sleep to let CoreSimulatorService to exit
sleep 3
+ # Version 12.2_beta installed into 12.2 directory and 12.1_GM_seed in 12.1
+ pattern="[0-9]{1,2}.*_"
+ if [[ $XCODE_VERSION =~ $pattern ]] ; then
+ XCODE_VERSION=$(echo $XCODE_VERSION | cut -d"_" -f 1)
+ fi
# Select xcode version by default
sudo xcode-select -s "/Applications/Xcode_${XCODE_VERSION}.app/Contents/Developer"
diff --git a/images/macos/provision/core/xcode-sims.sh b/images/macos/provision/core/xcode-sims.sh
index fb2af5d4..8dff14a5 100755
--- a/images/macos/provision/core/xcode-sims.sh
+++ b/images/macos/provision/core/xcode-sims.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
source ~/utils/utils.sh
diff --git a/images/macos/provision/utils/utils.sh b/images/macos/provision/utils/utils.sh
index 4a887c5d..fab443e7 100755
--- a/images/macos/provision/utils/utils.sh
+++ b/images/macos/provision/utils/utils.sh
@@ -1,3 +1,5 @@
+#!/bin/bash -e -o pipefail
+
download_with_retries() {
# Due to restrictions of bash functions, positional arguments are used here.
# In case if you using latest argument NAME, you should also set value to all previous parameters.
@@ -5,22 +7,31 @@ download_with_retries() {
local URL="$1"
local DEST="${2:-.}"
local NAME="${3:-${URL##*/}}"
+ local COMPRESSED="$4"
- echo "Downloading $URL..."
- wget $URL --output-document="$DEST/$NAME" \
- --tries=30 \
- --wait 30 \
- --retry-connrefused \
- --retry-on-host-error \
- --retry-on-http-error=404,429,500,502,503 \
- --no-verbose
-
- if [ $? != 0 ]; then
- echo "Could not download $URL; Exiting build!"
- exit 1
+ if [[ $COMPRESSED == "compressed" ]]; then
+ COMMAND="curl $URL -4 -sL --compressed -o '$DEST/$NAME'"
+ else
+ COMMAND="curl $URL -4 -sL -o '$DEST/$NAME'"
fi
- return 0
+ echo "Downloading $URL..."
+ retries=20
+ interval=30
+ while [ $retries -gt 0 ]; do
+ ((retries--))
+ eval $COMMAND
+ if [ $? != 0 ]; then
+ echo "Unable to download $URL, next attempt in $interval sec, $retries attempts left"
+ sleep $interval
+ else
+ echo "$URL was downloaded successfully to $DEST/$NAME"
+ return 0
+ fi
+ done
+
+ echo "Could not download $URL"
+ return 1
}
is_BigSur() {
@@ -84,4 +95,17 @@ get_toolset_value() {
verlte() {
sortedVersion=$(echo -e "$1\n$2" | sort -V | head -n1)
[ "$1" = "$sortedVersion" ]
+}
+
+brew_cask_install_ignoring_sha256() {
+ local TOOL_NAME=$1
+
+ CASK_DIR="$(brew --repo homebrew/cask)/Casks"
+ chmod a+w "$CASK_DIR/$TOOL_NAME.rb"
+ SHA=$(grep "sha256" "$CASK_DIR/$TOOL_NAME.rb" | awk '{print $2}')
+ sed -i '' "s/$SHA/:no_check/" "$CASK_DIR/$TOOL_NAME.rb"
+ brew cask install $TOOL_NAME
+ pushd $CASK_DIR
+ git checkout HEAD -- "$TOOL_NAME.rb"
+ popd
}
\ No newline at end of file
diff --git a/images/macos/provision/utils/xamarin-utils.sh b/images/macos/provision/utils/xamarin-utils.sh
index dd6d7ae9..1017cec2 100644
--- a/images/macos/provision/utils/xamarin-utils.sh
+++ b/images/macos/provision/utils/xamarin-utils.sh
@@ -1,11 +1,11 @@
-#!/bin/sh
+#!/bin/bash -e -o pipefail
# Xamarin can clean their SDKs while updating to newer versions,
# so we should be able to detect it during image generation
downloadAndInstallPKG() {
local PKG_URL=$1
local PKG_NAME=${PKG_URL##*/}
-
+
download_with_retries $PKG_URL
echo "Installing $PKG_NAME..."
@@ -159,7 +159,7 @@ installNunitConsole() {
local MONO_VERSION=$1
cat < ${TMPMOUNT}/${NUNIT3_CONSOLE_BIN}
-#!/bin/sh
+#!/bin/bash -e -o pipefail
exec /Library/Frameworks/Mono.framework/Versions/${MONO_VERSION}/bin/mono --debug \$MONO_OPTIONS $NUNIT3_PATH/nunit3-console.exe "\$@"
EOF
sudo chmod +x ${TMPMOUNT}/${NUNIT3_CONSOLE_BIN}
@@ -180,7 +180,7 @@ downloadNUnitConsole() {
echo "Installing NUnit 3..."
sudo unzip nunit3.zip -d $NUNIT3_PATH
NUNIT3_CONSOLE_BIN=nunit3-console
-
+
popd
}
diff --git a/images/macos/software-report/SoftwareReport.Common.psm1 b/images/macos/software-report/SoftwareReport.Common.psm1
index c3fe7517..7616b81b 100644
--- a/images/macos/software-report/SoftwareReport.Common.psm1
+++ b/images/macos/software-report/SoftwareReport.Common.psm1
@@ -96,6 +96,11 @@ function Get-PipVersion {
return "${versionPart1} ${versionPart2} ${versionPart3}"
}
+function Get-PipxVersion {
+ $pipxVersion = Run-Command "pipx --version" -SuppressStderr
+ return "Pipx $pipxVersion"
+}
+
function Get-NVMNodeVersionList {
$nvmPath = Join-Path $env:HOME ".nvm" "nvm.sh"
$nvmInitCommand = ". ${nvmPath} > /dev/null 2>&1 || true"
diff --git a/images/macos/software-report/SoftwareReport.Generator.ps1 b/images/macos/software-report/SoftwareReport.Generator.ps1
index 9bcef14c..4eab767c 100644
--- a/images/macos/software-report/SoftwareReport.Generator.ps1
+++ b/images/macos/software-report/SoftwareReport.Generator.ps1
@@ -83,6 +83,7 @@ $npmVersion = Run-Command "npm --version"
$yarnVersion = Run-Command "yarn --version"
$nugetVersion = Run-Command "nuget help" | Select-Object -First 1 | Take-Part -Part 2
$pip3Version = Get-PipVersion -Version 3
+$pipxVersion = Get-PipxVersion
$condaVersion = Invoke-Expression "conda --version"
$rubyGemsVersion = Run-Command "gem --version"
$composerVersion = Run-Command "composer --version" | Take-Part -Part 2
@@ -99,6 +100,7 @@ if ($os.IsLessThanBigSur) {
$markdown += New-MDList -Style Unordered -Lines @(
"Pip ${pip3Version}",
+ $pipxVersion,
$bundlerVersion,
"Carthage ${carthageVersion}",
"CocoaPods ${cocoaPodsVersion}",
diff --git a/images/macos/templates/macOS-10.13.json b/images/macos/templates/macOS-10.13.json
index 35c7ef3c..3eda456d 100644
--- a/images/macos/templates/macOS-10.13.json
+++ b/images/macos/templates/macOS-10.13.json
@@ -43,6 +43,11 @@
"type": "shell",
"inline": "mkdir ~/image-generation"
},
+ {
+ "type": "file",
+ "source": "./provision/assets",
+ "destination": "~/image-generation/"
+ },
{
"type": "file",
"source": "./tests",
@@ -181,7 +186,8 @@
"./provision/core/edge.sh",
"./provision/core/firefox.sh",
"./provision/core/toolcache-high-sierra.sh",
- "./provision/core/pypy.sh"
+ "./provision/core/pypy.sh",
+ "./provision/core/pipx-packages.sh"
]
},
{
diff --git a/images/macos/templates/macOS-10.14.json b/images/macos/templates/macOS-10.14.json
index 2687302e..06e4dc7b 100644
--- a/images/macos/templates/macOS-10.14.json
+++ b/images/macos/templates/macOS-10.14.json
@@ -43,6 +43,11 @@
"type": "shell",
"inline": "mkdir ~/image-generation"
},
+ {
+ "type": "file",
+ "source": "./provision/assets",
+ "destination": "~/image-generation/"
+ },
{
"type": "file",
"source": "./tests",
@@ -186,7 +191,8 @@
"./provision/core/miniconda.sh",
"./provision/core/xcode-postbuild.sh",
"./provision/core/toolcache.sh",
- "./provision/core/pypy.sh"
+ "./provision/core/pypy.sh",
+ "./provision/core/pipx-packages.sh"
],
"environment_vars": [
"GITHUB_FEED_TOKEN={{user `github_feed_token`}}"
diff --git a/images/macos/templates/macOS-10.15.json b/images/macos/templates/macOS-10.15.json
index b7752e12..75e0726e 100644
--- a/images/macos/templates/macOS-10.15.json
+++ b/images/macos/templates/macOS-10.15.json
@@ -43,6 +43,11 @@
"type": "shell",
"inline": "mkdir ~/image-generation"
},
+ {
+ "type": "file",
+ "source": "./provision/assets",
+ "destination": "~/image-generation/"
+ },
{
"type": "file",
"source": "./tests",
@@ -181,7 +186,8 @@
"./provision/core/firefox.sh",
"./provision/core/xcode-postbuild.sh",
"./provision/core/toolcache.sh",
- "./provision/core/pypy.sh"
+ "./provision/core/pypy.sh",
+ "./provision/core/pipx-packages.sh"
],
"environment_vars": [
"GITHUB_FEED_TOKEN={{user `github_feed_token`}}"
diff --git a/images/macos/templates/macOS-11.0.json b/images/macos/templates/macOS-11.0.json
index 27f39bfb..2a9b691b 100644
--- a/images/macos/templates/macOS-11.0.json
+++ b/images/macos/templates/macOS-11.0.json
@@ -43,6 +43,11 @@
"type": "shell",
"inline": "mkdir ~/image-generation"
},
+ {
+ "type": "file",
+ "source": "./provision/assets",
+ "destination": "~/image-generation/"
+ },
{
"type": "file",
"source": "./tests",
@@ -181,7 +186,8 @@
"./provision/core/chrome.sh",
"./provision/core/edge.sh",
"./provision/core/firefox.sh",
- "./provision/core/toolcache.sh"
+ "./provision/core/toolcache.sh",
+ "./provision/core/pipx-packages.sh"
],
"environment_vars": [
"GITHUB_FEED_TOKEN={{user `github_feed_token`}}"
diff --git a/images/macos/tests/Linters.Tests.ps1 b/images/macos/tests/Linters.Tests.ps1
index 3b7b8e0d..31d3698c 100644
--- a/images/macos/tests/Linters.Tests.ps1
+++ b/images/macos/tests/Linters.Tests.ps1
@@ -3,10 +3,6 @@ Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1"
$os = Get-OSVersion
Describe "Linters" {
- It "yamllint" {
- "yamllint --version" | Should -ReturnZeroExitCode
- }
-
It "SwiftLint" -Skip:($os.IsHighSierra) {
"swiftlint version" | Should -ReturnZeroExitCode
}
diff --git a/images/macos/tests/PipxPackages.Tests.ps1 b/images/macos/tests/PipxPackages.Tests.ps1
new file mode 100644
index 00000000..ed981938
--- /dev/null
+++ b/images/macos/tests/PipxPackages.Tests.ps1
@@ -0,0 +1,7 @@
+Describe "PipxPackages" {
+ $pipxToolset = Get-ToolsetValue "pipx"
+ $testCases = $pipxToolset | ForEach-Object { @{package = $_.package; cmd = $_.cmd} }
+ It "" -TestCases $testCases {
+ "$cmd" | Should -ReturnZeroExitCode
+ }
+}
\ No newline at end of file
diff --git a/images/macos/tests/Python.Tests.ps1 b/images/macos/tests/Python.Tests.ps1
index 62460999..7a50a7ab 100644
--- a/images/macos/tests/Python.Tests.ps1
+++ b/images/macos/tests/Python.Tests.ps1
@@ -32,6 +32,10 @@ Describe "Python" {
"pip3 --version" | Should -ReturnZeroExitCode
}
+ It "Pipx is available" {
+ "pipx --version" | Should -ReturnZeroExitCode
+ }
+
It "Pip 3 and Python 3 came from the same brew formula" {
$pip3Path = Split-Path (readlink (which pip3))
$python3Path = Split-Path (readlink (which python3))
diff --git a/images/macos/toolsets/toolset-10.13.json b/images/macos/toolsets/toolset-10.13.json
index 6c12251b..3bf62968 100644
--- a/images/macos/toolsets/toolset-10.13.json
+++ b/images/macos/toolsets/toolset-10.13.json
@@ -194,5 +194,11 @@
"3.6"
]
}
+ ],
+ "pipx": [
+ {
+ "package": "yamllint",
+ "cmd": "yamllint --version"
+ }
]
}
\ No newline at end of file
diff --git a/images/macos/toolsets/toolset-10.14.json b/images/macos/toolsets/toolset-10.14.json
index 2abe9803..aa1b4101 100644
--- a/images/macos/toolsets/toolset-10.14.json
+++ b/images/macos/toolsets/toolset-10.14.json
@@ -254,5 +254,11 @@
"1.15.*"
]
}
+ ],
+ "pipx": [
+ {
+ "package": "yamllint",
+ "cmd": "yamllint --version"
+ }
]
}
\ No newline at end of file
diff --git a/images/macos/toolsets/toolset-10.15.json b/images/macos/toolsets/toolset-10.15.json
index 21b09828..c2bdbd2c 100644
--- a/images/macos/toolsets/toolset-10.15.json
+++ b/images/macos/toolsets/toolset-10.15.json
@@ -22,7 +22,7 @@
"6.12.0.93", "6.10.0.106", "6.8.0.123", "6.6.0.166", "6.4.0.208"
],
"ios-versions": [
- "14.0.0.0", "13.20.2.2", "13.18.2.1", "13.16.0.13", "13.14.1.39", "13.10.0.21", "13.8.3.0", "13.6.0.12", "13.4.0.2", "13.2.0.47"
+ "14.2.0.12", "14.0.0.0", "13.20.2.2", "13.18.2.1", "13.16.0.13", "13.14.1.39", "13.10.0.21", "13.8.3.0", "13.6.0.12", "13.4.0.2", "13.2.0.47"
],
"mac-versions": [
"6.20.2.2", "6.18.3.2", "6.16.0.13", "6.14.1.39", "6.10.0.21", "6.8.3.0", "6.6.0.12", "6.4.0.2", "6.2.0.47"
@@ -30,8 +30,15 @@
"android-versions": [
"11.0.2.0", "10.3.1.4", "10.2.0.100", "10.1.3.7", "10.0.6.2"
],
- "bundle-default": "latest",
+ "bundle-default": "6_12_1",
"bundles": [
+ {
+ "symlink": "6_12_2",
+ "mono":"6.12",
+ "ios": "14.2",
+ "mac": "6.20",
+ "android": "11.0"
+ },
{
"symlink": "6_12_1",
"mono":"6.12",
@@ -174,5 +181,11 @@
"1.15.*"
]
}
+ ],
+ "pipx": [
+ {
+ "package": "yamllint",
+ "cmd": "yamllint --version"
+ }
]
}
\ No newline at end of file
diff --git a/images/macos/toolsets/toolset-11.0.json b/images/macos/toolsets/toolset-11.0.json
index 5ff2280a..c05de28c 100644
--- a/images/macos/toolsets/toolset-11.0.json
+++ b/images/macos/toolsets/toolset-11.0.json
@@ -11,7 +11,7 @@
"6.12.0.93"
],
"ios-versions": [
- "14.0.0.0", "13.20.2.2"
+ "14.2.0.12", "14.0.0.0", "13.20.2.2"
],
"mac-versions": [
"6.20.2.2"
@@ -21,6 +21,13 @@
],
"bundle-default": "6_12_0",
"bundles": [
+ {
+ "symlink": "6_12_2",
+ "mono":"6.12",
+ "ios": "14.2",
+ "mac": "6.20",
+ "android": "11.0"
+ },
{
"symlink": "6_12_1",
"mono":"6.12",
@@ -88,5 +95,11 @@
"1.15.*"
]
}
+ ],
+ "pipx": [
+ {
+ "package": "yamllint",
+ "cmd": "yamllint --version"
+ }
]
}
\ No newline at end of file
diff --git a/images/win/Windows2016-Readme.md b/images/win/Windows2016-Readme.md
index f184b50a..05e7c2d6 100644
--- a/images/win/Windows2016-Readme.md
+++ b/images/win/Windows2016-Readme.md
@@ -1,10 +1,11 @@
| Announcements |
|-|
+| [[Ubuntu] [Windows] Boost 1.69.0 will be deprecated on November, 10](https://github.com/actions/virtual-environments/issues/1847) |
| [[In Discussion] Git internal tools will be removed from PATH Windows images and replaced with MSYS2 tools](https://github.com/actions/virtual-environments/issues/1525) |
***
# Microsoft Windows Server 2016 Datacenter
-- OS Version: 10.0.14393 Build 3930
-- Image Version: 20201012.1
+- OS Version: 10.0.14393 Build 3986
+- Image Version: 20201020.1
## Installed Software
### Language and Runtime
@@ -14,7 +15,7 @@
- Java 13.0.2
- Python 3.7.9
- Ruby 2.5.8p224
-- Go 1.14.9
+- Go 1.14.10
- PHP 7.4.11
- Julia 1.5.2
- Perl 5.32.0
@@ -25,46 +26,46 @@
- Vcpkg 2020.06.15
- NPM 6.14.8
- Yarn 1.22.10
-- pip 20.2.3 (python 3.7)
-- Miniconda 4.6.14
+- pip 20.2.4 (python 3.7)
+- Miniconda 4.8.3
- RubyGems 3.1.4
- Helm 3.3.4
-- Composer 1.10.13
+- Composer 1.10.15
- NuGet 5.7.0.6726
### Project Management
- Ant 1.10.9
- Maven 3.6.3
-- Gradle 6.6
+- Gradle 6.7
- sbt 1.4.0
### Tools
- azcopy 10.6.0
-- Bazel 3.6.0
-- Bazelisk 1.7.1
+- Bazel 3.7.0
+- Bazelisk 1.7.3
- CMake 3.18.4
-- CodeQL Action Bundle 2.2.5
+- CodeQL Action Bundle 2.3.0
- R 4.0.3
- Docker 19.03.12
-- Docker-compose 1.27.2
-- Git 2.28.0
-- Git LFS 2.11.0
-- Google Cloud SDK 313.0.1
+- Docker-compose 1.27.4
+- Git 2.29.0
+- Git LFS 2.12.0
+- Google Cloud SDK 315.0.0
- InnoSetup 6.0.5
- jq 1.6
-- Kubectl 1.19.1
+- Kubectl 1.19.3
- Kind 0.9.0
- Mingw-w64 8.1.0
- Mercurial 5.0
- NSIS v3.06.1
- Newman 5.2.0
- OpenSSL 1.1.1
-- Packer 1.6.3
-- Pulumi v2.11.2
+- Packer 1.6.4
+- Pulumi v2.12.0
- Subversion (SVN) 1.14.0
- ghc 8.10.2
- Cabal 3.2.0.0
-- Stack 2.3.3
+- Stack 2.5.1
- WinAppDriver 1.1.1809.18001
- zstd 1.4.5
- VSWhere 2.8.4
@@ -72,12 +73,12 @@
- yamllint 1.25.0
### CLI Tools
-- Azure CLI 2.12.1
+- Azure CLI 2.13.0
- Azure DevOps CLI extension 0.18.0
- Azure Dev Spaces CLI 1.0.20200921.3
-- AWS CLI 2.0.56
+- AWS CLI 2.0.57
- AWS SAM CLI 1.6.2
-- AWS Session Manager CLI 1.1.61.0
+- AWS Session Manager CLI 1.2.7.0
- Alibaba Cloud CLI 3.0.60
- Cloud Foundry CLI 6.53.0
- Hub CLI 2.14.2
@@ -93,11 +94,11 @@
- cargo-outdated v0.9.11
### Browsers and webdrivers
-- Google Chrome 86.0.4240.75
+- Google Chrome 86.0.4240.111
- Chrome Driver 86.0.4240.22
-- Microsoft Edge 86.0.622.38
-- Microsoft Edge Driver 86.0.622.38
-- Mozilla Firefox 81.0.1
+- Microsoft Edge 86.0.622.48
+- Microsoft Edge Driver 86.0.622.48
+- Mozilla Firefox 82.0
- Gecko Driver 0.27.0
- IE Driver 3.150.1.0
@@ -137,8 +138,8 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
| 1.11.13 | x64 | GOROOT_1_11_X64 |
| 1.12.17 | x64 | GOROOT_1_12_X64 |
| 1.13.15 | x64 | GOROOT_1_13_X64 |
-| 1.14.9 (Default) | x64 | GOROOT_1_14_X64 |
-| 1.15.2 | x64 | GOROOT_1_15_X64 |
+| 1.14.10 (Default) | x64 | GOROOT_1_14_X64 |
+| 1.15.3 | x64 | GOROOT_1_15_X64 |
#### Node
@@ -147,7 +148,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
| 8.17.0 | x64 |
| 10.22.1 | x64 |
| 12.19.0 | x64 |
-| 14.13.1 | x64 |
+| 14.14.0 | x64 |
#### Python
@@ -158,6 +159,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
| 3.6.8 | x64, x86 |
| 3.7.9 (Default) | x64, x86 |
| 3.8.6 | x64, x86 |
+| 3.9.0 | x64, x86 |
#### Ruby
@@ -200,6 +202,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
### Database tools
- Azure CosmosDb Emulator 2.11.6.0
+- DacFx 15.0.4897.1
- SQLPS 1.0
- MySQL 5.7.21.0
@@ -207,7 +210,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
### Visual Studio Enterprise 2017
| Name | Version | Path |
| ----------------------------- | --------------- | -------------------------------------------------------------- |
-| Visual Studio Enterprise 2017 | 15.9.28307.1259 | C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise |
+| Visual Studio Enterprise 2017 | 15.9.28307.1274 | C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise |
#### Workloads, components and extensions:
@@ -476,20 +479,20 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
### .NET Core SDK
`Location C:\Program Files\dotnet\sdk`
-- 1.1.14 2.1.300 2.1.301 2.1.302 2.1.401 2.1.402 2.1.403 2.1.500 2.1.502 2.1.503 2.1.504 2.1.505 2.1.506 2.1.507 2.1.508 2.1.509 2.1.510 2.1.511 2.1.512 2.1.513 2.1.514 2.1.515 2.1.516 2.1.517 2.1.518 2.1.602 2.1.603 2.1.604 2.1.605 2.1.606 2.1.607 2.1.608 2.1.609 2.1.610 2.1.611 2.1.612 2.1.613 2.1.614 2.1.615 2.1.700 2.1.701 2.1.801 2.1.802 2.1.803 2.1.804 2.1.805 2.1.806 2.1.807 2.1.808 2.1.809 2.1.810 3.1.100 3.1.101 3.1.102 3.1.103 3.1.104 3.1.105 3.1.106 3.1.107 3.1.108 3.1.200 3.1.201 3.1.202 3.1.300 3.1.301 3.1.302 3.1.401 3.1.402
+- 1.1.14 2.1.300 2.1.301 2.1.302 2.1.401 2.1.402 2.1.403 2.1.500 2.1.502 2.1.503 2.1.504 2.1.505 2.1.506 2.1.507 2.1.508 2.1.509 2.1.510 2.1.511 2.1.512 2.1.513 2.1.514 2.1.515 2.1.516 2.1.517 2.1.518 2.1.519 2.1.602 2.1.603 2.1.604 2.1.605 2.1.606 2.1.607 2.1.608 2.1.609 2.1.610 2.1.611 2.1.612 2.1.613 2.1.614 2.1.615 2.1.616 2.1.700 2.1.701 2.1.801 2.1.802 2.1.803 2.1.804 2.1.805 2.1.806 2.1.807 2.1.808 2.1.809 2.1.810 2.1.811 3.1.100 3.1.101 3.1.102 3.1.103 3.1.104 3.1.105 3.1.106 3.1.107 3.1.108 3.1.109 3.1.200 3.1.201 3.1.202 3.1.300 3.1.301 3.1.302 3.1.401 3.1.402 3.1.403
### .NET Core Runtime
`Location: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All`
-- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22
+- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 2.1.23
`Location: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App`
-- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8
+- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 2.1.23 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9
`Location: C:\Program Files\dotnet\shared\Microsoft.NETCore.App`
-- 1.0.16 1.1.13 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8
+- 1.0.16 1.1.13 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 2.1.23 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9
`Location: C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App`
-- 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8
+- 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9
### .NET Framework
`Type: Developer Pack`
@@ -518,7 +521,7 @@ All other versions are saved but not installed.
| Pester | 3.4.0
5.0.4 |
| PowerShellGet | 1.0.0.1
2.2.4.1
2.2.5 |
| PSWindowsUpdate | 2.2.0.2 |
-| SqlServer | 21.1.18228 |
+| SqlServer | 21.1.18229 |
| VSSetup | 2.2.16 |
### Android
diff --git a/images/win/Windows2019-Readme.md b/images/win/Windows2019-Readme.md
index a153b8d4..0f79ae55 100644
--- a/images/win/Windows2019-Readme.md
+++ b/images/win/Windows2019-Readme.md
@@ -1,10 +1,11 @@
| Announcements |
|-|
+| [[Ubuntu] [Windows] Boost 1.69.0 will be deprecated on November, 10](https://github.com/actions/virtual-environments/issues/1847) |
| [[In Discussion] Git internal tools will be removed from PATH Windows images and replaced with MSYS2 tools](https://github.com/actions/virtual-environments/issues/1525) |
***
# Microsoft Windows Server 2019 Datacenter
-- OS Version: 10.0.17763 Build 1457
-- Image Version: 20201011.1
+- OS Version: 10.0.17763 Build 1518
+- Image Version: 20201021.0
## Enabled windows optional features
- Windows Subsystem for Linux
@@ -17,7 +18,7 @@
- Java 13.0.2
- Python 3.7.9
- Ruby 2.5.8p224
-- Go 1.14.9
+- Go 1.14.10
- PHP 7.4.11
- Julia 1.5.2
- Perl 5.32.0
@@ -28,46 +29,46 @@
- Vcpkg 2020.06.15
- NPM 6.14.8
- Yarn 1.22.10
-- pip 20.2.3 (python 3.7)
-- Miniconda 4.6.14
+- pip 20.2.4 (python 3.7)
+- Miniconda 4.8.3
- RubyGems 3.1.4
- Helm 3.3.4
-- Composer 1.10.13
+- Composer 1.10.15
- NuGet 5.7.0.6726
### Project Management
- Ant 1.10.9
- Maven 3.6.3
-- Gradle 6.6
-- sbt 1.4.0
+- Gradle 6.7
+- sbt 1.4.1
### Tools
- azcopy 10.6.0
-- Bazel 3.6.0
-- Bazelisk 1.7.1
+- Bazel 3.7.0
+- Bazelisk 1.7.3
- CMake 3.18.4
-- CodeQL Action Bundle 2.2.5
+- CodeQL Action Bundle 2.3.0
- R 4.0.3
- Docker 19.03.12
-- Docker-compose 1.27.2
-- Git 2.28.0
-- Git LFS 2.11.0
-- Google Cloud SDK 313.0.1
+- Docker-compose 1.27.4
+- Git 2.29.0
+- Git LFS 2.12.0
+- Google Cloud SDK 315.0.0
- InnoSetup 6.0.5
- jq 1.6
-- Kubectl 1.19.1
+- Kubectl 1.19.3
- Kind 0.9.0
- Mingw-w64 8.1.0
- Mercurial 5.0
- NSIS v3.06.1
- Newman 5.2.0
- OpenSSL 1.1.1
-- Packer 1.6.3
-- Pulumi v2.11.2
+- Packer 1.6.4
+- Pulumi v2.12.0
- Subversion (SVN) 1.14.0
- ghc 8.10.2
- Cabal 3.2.0.0
-- Stack 2.3.3
+- Stack 2.5.1
- WinAppDriver 1.1.1809.18001
- zstd 1.4.5
- VSWhere 2.8.4
@@ -75,12 +76,12 @@
- yamllint 1.25.0
### CLI Tools
-- Azure CLI 2.12.1
+- Azure CLI 2.13.0
- Azure DevOps CLI extension 0.18.0
- Azure Dev Spaces CLI 1.0.20200921.3
-- AWS CLI 2.0.56
+- AWS CLI 2.0.58
- AWS SAM CLI 1.6.2
-- AWS Session Manager CLI 1.1.61.0
+- AWS Session Manager CLI 1.2.7.0
- Alibaba Cloud CLI 3.0.60
- Cloud Foundry CLI 6.53.0
- Hub CLI 2.14.2
@@ -96,11 +97,11 @@
- cargo-outdated v0.9.11
### Browsers and webdrivers
-- Google Chrome 86.0.4240.75
+- Google Chrome 86.0.4240.111
- Chrome Driver 86.0.4240.22
-- Microsoft Edge 86.0.622.38
-- Microsoft Edge Driver 86.0.622.38
-- Mozilla Firefox 81.0.1
+- Microsoft Edge 86.0.622.48
+- Microsoft Edge Driver 86.0.622.48
+- Mozilla Firefox 82.0
- Gecko Driver 0.27.0
- IE Driver 3.150.1.0
@@ -140,8 +141,8 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
| 1.11.13 | x64 | GOROOT_1_11_X64 |
| 1.12.17 | x64 | GOROOT_1_12_X64 |
| 1.13.15 | x64 | GOROOT_1_13_X64 |
-| 1.14.9 (Default) | x64 | GOROOT_1_14_X64 |
-| 1.15.2 | x64 | GOROOT_1_15_X64 |
+| 1.14.10 (Default) | x64 | GOROOT_1_14_X64 |
+| 1.15.3 | x64 | GOROOT_1_15_X64 |
#### Node
@@ -150,7 +151,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
| 8.17.0 | x64 |
| 10.22.1 | x64 |
| 12.19.0 | x64 |
-| 14.13.1 | x64 |
+| 14.14.0 | x64 |
#### Python
@@ -161,6 +162,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
| 3.6.8 | x64, x86 |
| 3.7.9 (Default) | x64, x86 |
| 3.8.6 | x64, x86 |
+| 3.9.0 | x64, x86 |
#### Ruby
@@ -203,20 +205,21 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
### Database tools
- Azure CosmosDb Emulator 2.11.6.0
+- DacFx 15.0.4897.1
- SQLPS 1.0
- MySQL 5.7.21.0
### Visual Studio Enterprise 2019
-| Name | Version | Path |
-| ----------------------------- | -------------- | -------------------------------------------------------------- |
-| Visual Studio Enterprise 2019 | 16.7.30523.141 | C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise |
+| Name | Version | Path |
+| ----------------------------- | ------------- | -------------------------------------------------------------- |
+| Visual Studio Enterprise 2019 | 16.7.30611.23 | C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise |
#### Workloads, components and extensions:
| Package | Version |
| ------------------------------------------------------------------------- | -------------- |
-| Component.Android.NDK.R16B | 16.7.30521.138 |
+| Component.Android.NDK.R16B | 16.7.30611.6 |
| Component.Android.SDK25.Private | 16.0.28625.61 |
| Component.Android.SDK28 | 16.2.29003.222 |
| Component.Ant | 1.9.3.8 |
@@ -268,10 +271,10 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
| Microsoft.Net.ComponentGroup.4.7.DeveloperTools | 16.3.29207.166 |
| Microsoft.Net.ComponentGroup.DevelopmentPrerequisites | 16.3.29207.166 |
| Microsoft.Net.ComponentGroup.TargetingPacks.Common | 16.0.28516.191 |
-| Microsoft.Net.Core.Component.SDK.2.1 | 16.7.30428.286 |
+| Microsoft.Net.Core.Component.SDK.2.1 | 16.7.30611.6 |
| Microsoft.NetCore.Component.DevelopmentTools | 16.5.29721.120 |
-| Microsoft.NetCore.Component.Runtime.3.1 | 16.7.30428.286 |
-| Microsoft.NetCore.Component.SDK | 16.7.30428.286 |
+| Microsoft.NetCore.Component.Runtime.3.1 | 16.7.30611.6 |
+| Microsoft.NetCore.Component.SDK | 16.7.30611.6 |
| Microsoft.NetCore.Component.Web | 16.5.29721.120 |
| Microsoft.VisualStudio.Component.AppInsights.Tools | 16.5.29515.121 |
| Microsoft.VisualStudio.Component.AspNet45 | 16.0.28315.86 |
@@ -459,20 +462,20 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
### .NET Core SDK
`Location C:\Program Files\dotnet\sdk`
-- 2.1.300 2.1.301 2.1.302 2.1.401 2.1.402 2.1.403 2.1.500 2.1.502 2.1.503 2.1.504 2.1.505 2.1.506 2.1.507 2.1.508 2.1.509 2.1.510 2.1.511 2.1.512 2.1.513 2.1.514 2.1.515 2.1.516 2.1.517 2.1.518 2.1.602 2.1.603 2.1.604 2.1.605 2.1.606 2.1.607 2.1.608 2.1.609 2.1.610 2.1.611 2.1.612 2.1.613 2.1.614 2.1.615 2.1.700 2.1.701 2.1.801 2.1.802 2.1.803 2.1.804 2.1.805 2.1.806 2.1.807 2.1.808 2.1.809 2.1.810 3.1.100 3.1.101 3.1.102 3.1.103 3.1.104 3.1.105 3.1.106 3.1.107 3.1.108 3.1.200 3.1.201 3.1.202 3.1.300 3.1.301 3.1.302 3.1.401 3.1.402
+- 2.1.300 2.1.301 2.1.302 2.1.401 2.1.402 2.1.403 2.1.500 2.1.502 2.1.503 2.1.504 2.1.505 2.1.506 2.1.507 2.1.508 2.1.509 2.1.510 2.1.511 2.1.512 2.1.513 2.1.514 2.1.515 2.1.516 2.1.517 2.1.518 2.1.519 2.1.602 2.1.603 2.1.604 2.1.605 2.1.606 2.1.607 2.1.608 2.1.609 2.1.610 2.1.611 2.1.612 2.1.613 2.1.614 2.1.615 2.1.616 2.1.700 2.1.701 2.1.801 2.1.802 2.1.803 2.1.804 2.1.805 2.1.806 2.1.807 2.1.808 2.1.809 2.1.810 2.1.811 3.1.100 3.1.101 3.1.102 3.1.103 3.1.104 3.1.105 3.1.106 3.1.107 3.1.108 3.1.109 3.1.200 3.1.201 3.1.202 3.1.300 3.1.301 3.1.302 3.1.401 3.1.402 3.1.403
### .NET Core Runtime
`Location: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All`
-- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22
+- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 2.1.23
`Location: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App`
-- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8
+- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 2.1.23 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9
`Location: C:\Program Files\dotnet\shared\Microsoft.NETCore.App`
-- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8
+- 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.17 2.1.18 2.1.19 2.1.20 2.1.21 2.1.22 2.1.23 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9
`Location: C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App`
-- 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8
+- 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9
### .NET Framework
`Type: Developer Pack`
@@ -501,7 +504,7 @@ All other versions are saved but not installed.
| Pester | 3.4.0
5.0.4 |
| PowerShellGet | 1.0.0.1
2.2.4.1
2.2.5 |
| PSWindowsUpdate | 2.2.0.2 |
-| SqlServer | 21.1.18228 |
+| SqlServer | 21.1.18229 |
| VSSetup | 2.2.16 |
### Android
diff --git a/images/win/scripts/Installers/Configure-Shell.ps1 b/images/win/scripts/Installers/Configure-Shell.ps1
new file mode 100644
index 00000000..8eb163bc
--- /dev/null
+++ b/images/win/scripts/Installers/Configure-Shell.ps1
@@ -0,0 +1,23 @@
+# Create shells folder
+$shellPath = "C:\shells"
+New-Item -Path $shellPath -ItemType Directory | Out-Null
+
+# sh and bash <--> C:\msys64\usr\bin\bash.exe
+New-Item -ItemType SymbolicLink -Path "$shellPath\bash.exe" -Target "C:\msys64\usr\bin\bash.exe" | Out-Null
+New-Item -ItemType SymbolicLink -Path "$shellPath\sh.exe" -Target "C:\msys64\usr\bin\sh.exe" | Out-Null
+
+# WSL is available on Windows Server 2019
+if (Test-IsWin19)
+{
+ # winbash <--> C:\Windows\System32\bash.exe
+ New-Item -ItemType SymbolicLink -Path "$shellPath\winbash.exe" -Target "$env:SystemRoot\System32\bash.exe" | Out-Null
+}
+
+# gitbash <--> C:\Program Files\Git\bin\bash.exe
+New-Item -ItemType SymbolicLink -Path "$shellPath\gitbash.exe" -Target "$env:ProgramFiles\Git\bin\bash.exe" | Out-Null
+
+# msysbash <--> C:\msys64\usr\bin\bash.exe
+New-Item -ItemType SymbolicLink -Path "$shellPath\msysbash.exe" -Target "C:\msys64\usr\bin\bash.exe" | Out-Null
+
+# Add shells to PATH
+Add-MachinePathItem $shellPath
\ No newline at end of file
diff --git a/images/win/scripts/Installers/Finalize-VM.ps1 b/images/win/scripts/Installers/Finalize-VM.ps1
index 4e7a260c..d0bb3d26 100644
--- a/images/win/scripts/Installers/Finalize-VM.ps1
+++ b/images/win/scripts/Installers/Finalize-VM.ps1
@@ -30,3 +30,7 @@ New-Item -Path $winInstallDir -ItemType Directory -Force
# Remove AllUsersAllHosts profile
Remove-Item $profile.AllUsersAllHosts -Force
+
+# Clean yarn and npm cache
+yarn cache clean
+npm cache clean --force
\ No newline at end of file
diff --git a/images/win/scripts/Installers/Initialize-VM.ps1 b/images/win/scripts/Installers/Initialize-VM.ps1
index ad853bb7..02772872 100644
--- a/images/win/scripts/Installers/Initialize-VM.ps1
+++ b/images/win/scripts/Installers/Initialize-VM.ps1
@@ -128,11 +128,7 @@ if (Test-IsWin19) {
}
# Expand disk size of OS drive
-New-Item -Path d:\ -Name cmds.txt -ItemType File -Force
-Add-Content -Path d:\cmds.txt "SELECT VOLUME=C`r`nEXTEND"
-
-$expandResult = (diskpart /s 'd:\cmds.txt')
-Write-Host $expandResult
-
-Write-Host "Disk sizes after expansion"
-wmic logicaldisk get size,freespace,caption
+$driveLetter = "C"
+$size = Get-PartitionSupportedSize -DriveLetter $driveLetter
+Resize-Partition -DriveLetter $driveLetter -Size $size.SizeMax
+Get-Volume | Select-Object DriveLetter, SizeRemaining, Size | Sort-Object DriveLetter
\ No newline at end of file
diff --git a/images/win/scripts/Installers/Install-Git.ps1 b/images/win/scripts/Installers/Install-Git.ps1
index 27a61969..6c89250e 100644
--- a/images/win/scripts/Installers/Install-Git.ps1
+++ b/images/win/scripts/Installers/Install-Git.ps1
@@ -26,7 +26,7 @@ Install-Binary -Url $downloadUrl `
"/SP-", `
"/CLOSEAPPLICATIONS", `
"/RESTARTAPPLICATIONS", `
- "/o:PathOption=CmdTools", `
+ "/o:PathOption=Cmd", `
"/o:BashTerminalOption=ConHost", `
"/o:EnableSymlinks=Enabled", `
"/COMPONENTS=gitlfs")
@@ -36,15 +36,5 @@ Choco-Install -PackageName hub
# Disable GCM machine-wide
[Environment]::SetEnvironmentVariable("GCM_INTERACTIVE", "Never", [System.EnvironmentVariableTarget]::Machine)
-Add-MachinePathItem "C:\Program Files\Git\bin"
-
-if (Test-IsWin16) {
- $env:Path += ";$env:ProgramFiles\Git\usr\bin\"
-}
-
-# Add well-known SSH host keys to ssh_known_hosts
-ssh-keyscan -t rsa github.com >> "C:\Program Files\Git\etc\ssh\ssh_known_hosts"
-ssh-keyscan -t rsa ssh.dev.azure.com >> "C:\Program Files\Git\etc\ssh\ssh_known_hosts"
-
Invoke-PesterTests -TestFile "Git" -TestName "Git"
Invoke-PesterTests -TestFile "CLI.Tools" -TestName "Hub CLI"
diff --git a/images/win/scripts/Installers/Install-Mingw64.ps1 b/images/win/scripts/Installers/Install-Mingw64.ps1
index b6c86048..2b999f45 100644
--- a/images/win/scripts/Installers/Install-Mingw64.ps1
+++ b/images/win/scripts/Installers/Install-Mingw64.ps1
@@ -7,7 +7,7 @@ Choco-Install -PackageName mingw
# Make a copy of mingw32-make.exe to make.exe, which is a more discoverable name
# and so the same command line can be used on Windows as on macOS and Linux
-$path = where.exe mingw32-make.exe | Get-Item
+$path = Get-Command mingw32-make.exe -CommandType All | Where-Object { $_.Path.Contains("C:\ProgramData\Chocolatey") } | Get-Item
Copy-Item -Path $path -Destination (Join-Path $path.Directory 'make.exe')
Invoke-PesterTests -TestFile "Tools" -TestName "Mingw64"
diff --git a/images/win/scripts/Installers/Install-Msys2.ps1 b/images/win/scripts/Installers/Install-Msys2.ps1
index f0da3850..dea3b95d 100644
--- a/images/win/scripts/Installers/Install-Msys2.ps1
+++ b/images/win/scripts/Installers/Install-Msys2.ps1
@@ -9,35 +9,19 @@
$dash = "-" * 40
-$origPath = $env:PATH
-$gitPath = "$env:ProgramFiles\Git"
-
-$msys2_release = "https://api.github.com/repos/msys2/msys2-installer/releases/latest"
-
-$msys2Uri = ((Invoke-RestMethod $msys2_release).assets | Where-Object {
- $_.name -match "x86_64" -and $_.name.EndsWith("tar.xz") }).browser_download_url
-
-# Download the latest msys2 x86_64, filename includes release date
-Write-Host "Starting msys2 download using $($msys2Uri.split('/')[-1])"
+# Downloading msys2
+$msys2Release = "https://api.github.com/repos/msys2/msys2-installer/releases/latest"
+$msys2Uri = ((Invoke-RestMethod $msys2Release).assets | Where-Object {
+ $_.name -match "x86_64" -and $_.name.EndsWith("sfx.exe") }).browser_download_url
$msys2File = Start-DownloadWithRetry -Url $msys2Uri
-Write-Host "Finished download"
-# nix style path for tar
-$msys2FileU = "/$msys2File".replace(':', '').replace('\', '/')
-
-# Git tar needs exe's from mingw64\bin
-$env:PATH = "$gitPath\usr\bin;$gitPath\mingw64\bin;$origPath"
-
-$tar = "$gitPath\usr\bin\tar.exe"
-
-# extract tar.xz to C:\
+# extract sfx.exe to C:\
Write-Host "Starting msys2 extraction"
-&$tar -xJf $msys2FileU -C /c/
-Remove-Item $msys2File
+& $msys2File -y -oC:\
Write-Host "Finished extraction"
# Add msys2 bin tools folders to PATH temporary
-$env:PATH = "C:\msys64\mingw64\bin;C:\msys64\usr\bin;$origPath"
+$env:PATH = "C:\msys64\mingw64\bin;C:\msys64\usr\bin;$env:PATH"
Write-Host "`n$dash bash pacman-key --init"
bash.exe -c "pacman-key --init 2>&1"
@@ -73,6 +57,10 @@ Write-Host "`n$dash Install mingw32 packages"
$pre = "mingw-w64-i686-"
pacman.exe -S --noconfirm --needed --noprogressbar $tools32.replace('___', $pre).split(' ')
+# install openssh
+Write-Host "`n$dash Install openssh package"
+pacman.exe -S --noconfirm --needed --noprogressbar openssh
+
# clean all packages to decrease image size
Write-Host "`n$dash Clean packages"
pacman.exe -Scc --noconfirm
@@ -88,4 +76,23 @@ pacman.exe -Q | grep -v ^mingw-w64-
Write-Host "`nMSYS2 installation completed"
+# Environment
+# add C:\msys64\mingw64\bin and C:\msys64\usr\bin to PATH
+# C:\msys64\mingw64\bin add after C:\Windows\System32 to not replace built-in tar.exe
+$regEnvKey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\'
+$pathValue = Get-ItemPropertyValue -Path $regEnvKey -Name 'Path'
+$pathValue += ";C:\msys64\mingw64\bin;C:\msys64\usr\bin"
+Set-ItemProperty -Path $regEnvKey -Name 'Path' -Value $pathValue
+
+# Add well-known SSH host keys to ssh_known_hosts to Msys2
+ssh-keyscan -t rsa github.com >> "C:\msys64\etc\ssh\ssh_known_hosts"
+ssh-keyscan -t rsa ssh.dev.azure.com >> "C:\msys64\etc\ssh\ssh_known_hosts"
+
+# Add well-known SSH host keys to ssh_known_hosts to Git
+if (Test-Path "C:\Program Files\Git\etc\ssh")
+{
+ ssh-keyscan -t rsa github.com >> "C:\Program Files\Git\etc\ssh\ssh_known_hosts"
+ ssh-keyscan -t rsa ssh.dev.azure.com >> "C:\Program Files\Git\etc\ssh\ssh_known_hosts"
+}
+
Invoke-PesterTests -TestFile "MSYS2"
diff --git a/images/win/scripts/Installers/Install-SQLPowerShellTools.ps1 b/images/win/scripts/Installers/Install-SQLPowerShellTools.ps1
index 60cbbefa..37f5ece9 100644
--- a/images/win/scripts/Installers/Install-SQLPowerShellTools.ps1
+++ b/images/win/scripts/Installers/Install-SQLPowerShellTools.ps1
@@ -3,7 +3,7 @@
## Desc: Install SQL PowerShell tool
################################################################################
-$BaseUrl = "https://download.microsoft.com/download/8/7/2/872BCECA-C849-4B40-8EBE-21D48CDF1456/ENU/x64"
+$BaseUrl = "https://download.microsoft.com/download/B/1/7/B1783FE9-717B-4F78-A39A-A2E27E3D679D/ENU/x64"
# install required MSIs
$SQLSysClrTypesName = "SQLSysClrTypes.msi"
diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Common.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.Common.psm1
index 05b101aa..0ca95ee7 100644
--- a/images/win/scripts/SoftwareReport/SoftwareReport.Common.psm1
+++ b/images/win/scripts/SoftwareReport/SoftwareReport.Common.psm1
@@ -271,6 +271,13 @@ function Get-PacmanVersion {
return "- Pacman $pacmanVersion"
}
+function Get-ShellTarget {
+ $shells = Get-ChildItem C:\shells -File | Select-Object @{n="Name";e={
+ $name = $_.Name
+ if ($name -eq 'bash.exe') {"$name (Default)"} else {$name}}},@{n="Target";e={@($_.Target)[0]}} | Sort-Object Name
+ $shells | New-MDTable -Columns ([ordered]@{Name = "left"; Target = "left";})
+}
+
function Get-YAMLLintVersion {
yamllint --version
}
\ No newline at end of file
diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1
index 1b3bf299..06e1054d 100644
--- a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1
+++ b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1
@@ -142,14 +142,22 @@ $markdown += New-MDList -Style Unordered -Lines @(
(Get-SeleniumWebDriverVersion -Driver "iexplorer")
)
+$markdown += New-MDHeader "Shells" -Level 3
+$markdown += Get-ShellTarget
+$markdown += New-MDNewLine
+
$markdown += New-MDHeader "MSYS2" -Level 3
$markdown += Get-PacmanVersion
$markdown += New-MDNewLine
+$markdown += New-MDHeader "Notes:" -Level 5
$markdown += @'
```
Location: C:\msys64
-Note: MSYS2 is pre-installed on image but not added to PATH.
+1. MSYS2 is pre-installed on image
+2. C:\msys64\mingw64\bin is added to PATH and has lower precedence than C:\Windows\System32
+3. C:\msys64\usr\bin is added to PATH and has lower precedence than C:\Windows\System32
+4. Default bash.exe shell is set to the C:\msys64\usr\bin\bash.exe
```
'@
$markdown += New-MDNewLine
diff --git a/images/win/scripts/Tests/Git.Tests.ps1 b/images/win/scripts/Tests/Git.Tests.ps1
index 8dd159fa..e7675ee0 100644
--- a/images/win/scripts/Tests/Git.Tests.ps1
+++ b/images/win/scripts/Tests/Git.Tests.ps1
@@ -1,5 +1,5 @@
Describe "Git" {
- $gitTools = 'bash', 'awk', 'git', 'git-lfs'
+ $gitTools = 'git', 'git-lfs'
$gitTestCases = $gitTools | ForEach-Object {
@{
toolName = $_
diff --git a/images/win/scripts/Tests/Shell.Tests.ps1 b/images/win/scripts/Tests/Shell.Tests.ps1
new file mode 100644
index 00000000..915940e2
--- /dev/null
+++ b/images/win/scripts/Tests/Shell.Tests.ps1
@@ -0,0 +1,50 @@
+Describe "Shell" {
+ $shellTestCases = @(
+ @{Name = "C:\shells\bash.exe"; Target = "C:\msys64\usr\bin\bash.exe"},
+ @{Name = "C:\shells\sh.exe"; Target = "C:\msys64\usr\bin\sh.exe"},
+ @{Name = "C:\shells\gitbash.exe"; Target = "$env:ProgramFiles\Git\bin\bash.exe"},
+ @{Name = "C:\shells\msysbash.exe"; Target = "C:\msys64\usr\bin\bash.exe"}
+ )
+
+ $pathTestCases = @(
+ @{Path = "C:\shells"},
+ @{Path = "C:\msys64\mingw64\bin"},
+ @{Path = "C:\msys64\usr\bin"}
+ )
+
+ $IsWin16 = Test-IsWin16
+
+ It "Default bash.exe from MSYS2" {
+ (Get-Command bash).Path | Should -BeExactly "C:\shells\bash.exe"
+ }
+
+ It "Default sh.exe from MSYS2" {
+ (Get-Command sh).Path | Should -BeExactly "C:\shells\sh.exe"
+ }
+
+ It "Folder C:\shells exists" {
+ "C:\shells" | Should -Exist
+ }
+
+ It "C:\Windows\System32 before C:\msys64\mingw64\bin and C:\msys64\usr\bin" {
+ $path = $env:Path.Split(";").ToLower()
+ $indexOfSystem32 = $path.IndexOf("c:\windows\system32")
+
+ $path.IndexOf("c:\msys64\mingw64\bin") | Should -BeGreaterThan $indexOfSystem32
+ $path.IndexOf("c:\msys64\usr\bin") | Should -BeGreaterThan $indexOfSystem32
+ }
+
+ It "C:\shells\winbash.exe target to $env:SystemRoot\System32\bash.exe" -Skip:$IsWin16 {
+ $Name = "C:\shells\winbash.exe"
+ $Target = "$env:SystemRoot\System32\bash.exe"
+ (Get-Item $Name).Target | Should -BeExactly $Target
+ }
+
+ It " target to " -TestCases $shellTestCases {
+ (Get-Item $Name).Target | Should -BeExactly $Target
+ }
+
+ It " is in PATH" -TestCases $pathTestCases {
+ $env:Path.Split(";") | Should -Contain $Path
+ }
+}
\ No newline at end of file
diff --git a/images/win/windows2016.json b/images/win/windows2016.json
index 3c4b6566..8c1314d6 100644
--- a/images/win/windows2016.json
+++ b/images/win/windows2016.json
@@ -332,7 +332,8 @@
"type": "powershell",
"scripts": [
"{{ template_dir }}/scripts/Installers/Install-WindowsUpdates.ps1",
- "{{ template_dir }}/scripts/Installers/Configure-DynamicPort.ps1"
+ "{{ template_dir }}/scripts/Installers/Configure-DynamicPort.ps1",
+ "{{ template_dir }}/scripts/Installers/Configure-Shell.ps1"
],
"elevated_user": "{{user `install_user`}}",
"elevated_password": "{{user `install_password`}}"
diff --git a/images/win/windows2019.json b/images/win/windows2019.json
index 6609b5b3..a002f77f 100644
--- a/images/win/windows2019.json
+++ b/images/win/windows2019.json
@@ -13,7 +13,7 @@
"virtual_network_resource_group_name": "{{env `VNET_RESOURCE_GROUP`}}",
"virtual_network_subnet_name": "{{env `VNET_SUBNET`}}",
"private_virtual_network_with_public_ip": "{{env `PRIVATE_VIRTUAL_NETWORK_WITH_PUBLIC_IP`}}",
- "vm_size": "Standard_D4_v2",
+ "vm_size": "Standard_DS4_v2",
"run_scan_antivirus": "false",
"root_folder": "C:",
"toolset_json_path": "{{env `TEMP`}}\\toolset.json",
@@ -330,7 +330,8 @@
"type": "powershell",
"scripts": [
"{{ template_dir }}/scripts/Installers/Install-WindowsUpdates.ps1",
- "{{ template_dir }}/scripts/Installers/Configure-DynamicPort.ps1"
+ "{{ template_dir }}/scripts/Installers/Configure-DynamicPort.ps1",
+ "{{ template_dir }}/scripts/Installers/Configure-Shell.ps1"
],
"elevated_user": "{{user `install_user`}}",
"elevated_password": "{{user `install_password`}}"