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&badge=1)](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&badge=1)](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&badge=1)](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&badge=1)](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&badge=1)](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&badge=1)](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&badge=1)](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&badge=1)](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"