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/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/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/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/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/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"