diff --git a/.github/workflows/issue-triager.yml b/.github/workflows/issue-triager.yml index c7f4b9f88..c948a620a 100644 --- a/.github/workflows/issue-triager.yml +++ b/.github/workflows/issue-triager.yml @@ -32,7 +32,7 @@ jobs: const isAnnouncement = issueLabels.data && issueLabels.data .map(label => label.name) - .includes('announcement'); + .includes('Announcement'); if (!isAnnouncement) { github.issues.addLabels({ diff --git a/images.CI/macos/azure-pipelines/image-generation.yml b/images.CI/macos/azure-pipelines/image-generation.yml index b70e42158..37b17b8a0 100644 --- a/images.CI/macos/azure-pipelines/image-generation.yml +++ b/images.CI/macos/azure-pipelines/image-generation.yml @@ -42,6 +42,15 @@ jobs: SourceFolder: 'images/macos/provision/log/' RemoveSourceFolder: true + - task: PowerShell@2 + displayName: 'Select datastore' + inputs: + targetType: 'filePath' + filePath: ./images.CI/macos/select-datastore.ps1 + arguments: -VIServer "$(vcenter-server-v2)" ` + -VIUserName "$(vcenter-username-v2)" ` + -VIPassword "$(vcenter-password-v2)" + - pwsh: | $SensitiveData = @( 'IP address:', @@ -54,7 +63,7 @@ jobs: -var="vcenter_password=$(vcenter-password-v2)" ` -var="vcenter_datacenter=$(vcenter-datacenter-v2)" ` -var="cluster_or_esxi_host=$(esxi-cluster-v2)" ` - -var="esxi_datastore=${{ parameters.target_datastore }}" ` + -var="esxi_datastore=$(buildDatastore)" ` -var="output_folder=$(output-folder)" ` -var="vm_username=$(vm-username)" ` -var="vm_password=$(vm-password)" ` @@ -106,6 +115,18 @@ jobs: displayName: Publish test results condition: always() + - task: PowerShell@2 + displayName: 'Move vm to cold storage' + condition: succeededOrFailed() + inputs: + targetType: 'filePath' + filePath: ./images.CI/macos/move-vm.ps1 + arguments: -VMName "${{ variables.VirtualMachineName }}" ` + -TargetDataStore "${{ parameters.target_datastore }}" ` + -VIServer "$(vcenter-server-v2)" ` + -VIUserName "$(vcenter-username-v2)" ` + -VIPassword "$(vcenter-password-v2)" + - task: PowerShell@2 displayName: 'Destroy VM (if build canceled only)' condition: eq(variables['Agent.JobStatus'], 'Canceled') diff --git a/images.CI/macos/destroy-vm.ps1 b/images.CI/macos/destroy-vm.ps1 index 0b8083703..f6ed1b1a8 100644 --- a/images.CI/macos/destroy-vm.ps1 +++ b/images.CI/macos/destroy-vm.ps1 @@ -1,3 +1,21 @@ +<# +.SYNOPSIS + +This script deletes vm from vCenter + +.PARAMETER VMName +VM name to delete (Example "macOS-10.15_20201012.4") + +.PARAMETER VIServer +vCenter address (Example "10.0.1.16") + +.PARAMETER VIUserName +vCenter username (Example "Administrator") + +.PARAMETER VIPassword +vCenter password (Example "12345678") +#> + [CmdletBinding()] param( [Parameter(Mandatory)] @@ -17,25 +35,13 @@ param( [string]$VIPassword ) -$ProgressPreference = "SilentlyContinue" -$WarningPreference = "SilentlyContinue" +# Import helpers module +Import-Module $PSScriptRoot\helpers.psm1 -DisableNameChecking -# connection to a vCenter Server system -try -{ - $null = Set-PowerCLIConfiguration -Scope Session -InvalidCertificateAction Ignore -ParticipateInCEIP $false -Confirm:$false -WebOperationTimeoutSeconds 600 - $securePassword = ConvertTo-SecureString -String $VIPassword -AsPlainText -Force - $cred = New-Object System.Management.Automation.PSCredential($VIUserName, $securePassword) - $null = Connect-VIServer -Server $VIServer -Credential $cred -ErrorAction Stop - Write-Host "Connection to the vSphere server has been established" -} -catch -{ - Write-Host "##vso[task.LogIssue type=error;]Failed to connect to the vSphere server" - exit 1 -} +# Connection to a vCenter Server system +Connect-VCServer -# check vm clone status +# Check vm clone status $chainId = (Get-VIEvent -Entity $VMName).ChainId if ($chainId) { @@ -45,7 +51,7 @@ if ($chainId) try { Stop-Task -Task $task -Confirm:$false -ErrorAction Stop - Write-Host "The vm '$VMName' clone task has been cancelled" + Write-Host "The vm '$VMName' clone task has been canceled" } catch { @@ -54,7 +60,7 @@ if ($chainId) } } -# remove a vm +# Remove a vm $vm = Get-VM -Name $VMName -ErrorAction SilentlyContinue if ($vm) diff --git a/images.CI/macos/helpers.psm1 b/images.CI/macos/helpers.psm1 new file mode 100644 index 000000000..a5be3fee1 --- /dev/null +++ b/images.CI/macos/helpers.psm1 @@ -0,0 +1,26 @@ +<# +.SYNOPSIS + +Helper functions to use in images.CI scripts +#> + +Function Connect-VCServer +{ + try + { + # Preference + $global:ProgressPreference = 'SilentlyContinue' + $global:WarningPreference = 'SilentlyContinue' + # Ignore SSL + $null = Set-PowerCLIConfiguration -Scope Session -InvalidCertificateAction Ignore -ParticipateInCEIP $false -Confirm:$false -WebOperationTimeoutSeconds 600 + $securePassword = ConvertTo-SecureString -String $VIPassword -AsPlainText -Force + $cred = New-Object System.Management.Automation.PSCredential($VIUserName, $securePassword) + $null = Connect-VIServer -Server $VIServer -Credential $cred -ErrorAction Stop + Write-Host "Connection to the vSphere server has been established" + } + catch + { + Write-Host "##vso[task.LogIssue type=error;]Failed to connect to the vSphere server" + exit 1 + } +} \ No newline at end of file diff --git a/images.CI/macos/move-vm.ps1 b/images.CI/macos/move-vm.ps1 new file mode 100644 index 000000000..17e6faea3 --- /dev/null +++ b/images.CI/macos/move-vm.ps1 @@ -0,0 +1,59 @@ +<# +.SYNOPSIS + +This script migrates given VM to another datastore + +.PARAMETER VMName +VM name to migrate (Example "macOS-10.15_20201012.4") + +.PARAMETER TargetDataStore +Target datastore (Example "ds-image") + +.PARAMETER VIServer +vCenter address (Example "10.0.1.16") + +.PARAMETER VIUserName +vCenter username (Example "Administrator") + +.PARAMETER VIPassword +vCenter password (Example "12345678") +#> + +[CmdletBinding()] +param( + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string]$VMName, + + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string]$TargetDataStore, + + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string]$VIServer, + + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string]$VIUserName, + + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string]$VIPassword +) + +# Import helpers module +Import-Module $PSScriptRoot\helpers.psm1 -DisableNameChecking + +# Connection to a vCenter Server system +Connect-VCServer + +try +{ + Get-VM $VMName | Move-VM -Datastore $TargetDataStore -ErrorAction Stop + Write-Host "VM has been moved successfully to target datastore '$TargetDataStore'" +} +catch +{ + Write-Host "##vso[task.LogIssue type=error;]Failed to move VM '$VMName' to target datastore '$TargetDataStore'" +} \ No newline at end of file diff --git a/images.CI/macos/select-datastore.ps1 b/images.CI/macos/select-datastore.ps1 new file mode 100644 index 000000000..d6477700c --- /dev/null +++ b/images.CI/macos/select-datastore.ps1 @@ -0,0 +1,64 @@ +<# +.SYNOPSIS + +This script selects local datastore based on the following rules: + +- Name starts with ds-local-Datastore +- Datastore FreespaceGB > 400 Gb +- VM count on the datastore < 2 + +.PARAMETER VIServer +vCenter address (Example "10.0.1.16") + +.PARAMETER VIUserName +vCenter username (Example "Administrator") + +.PARAMETER VIPassword +vCenter password (Example "12345678") +#> + + +[CmdletBinding()] +param( + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string]$VIServer, + + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string]$VIUserName, + + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string]$VIPassword +) + +# Import helpers module +Import-Module $PSScriptRoot\helpers.psm1 -DisableNameChecking + +# 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 diff --git a/images/linux/post-generation/homebrew-permissions.sh b/images/linux/post-generation/homebrew-permissions.sh new file mode 100644 index 000000000..1dbd043e2 --- /dev/null +++ b/images/linux/post-generation/homebrew-permissions.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Fix permissions for Homebrew +# https://github.com/actions/virtual-environments/issues/1568 +brew_folder="/home/linuxbrew/" +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 + fi +fi diff --git a/images/linux/post-generation/rust-permissions.sh b/images/linux/post-generation/rust-permissions.sh new file mode 100644 index 000000000..6673686bd --- /dev/null +++ b/images/linux/post-generation/rust-permissions.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Fix permissions for the Rust folder +# https://github.com/actions/virtual-environments/issues/572 +rust_folder="/usr/share/rust" +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 + fi +fi diff --git a/images/linux/scripts/SoftwareReport/SoftwareReport.Common.psm1 b/images/linux/scripts/SoftwareReport/SoftwareReport.Common.psm1 index f45496638..14d4a18e6 100644 --- a/images/linux/scripts/SoftwareReport/SoftwareReport.Common.psm1 +++ b/images/linux/scripts/SoftwareReport/SoftwareReport.Common.psm1 @@ -249,5 +249,7 @@ function Get-AptPackages { function Get-PipxVersion { $result = (Get-CommandResult "pipx --version").Output - return "Pipx $result" + $result -match "(?\d+\.\d+\.\d+\.?\d*)" | Out-Null + $pipxVersion = $Matches.Version + return "Pipx $pipxVersion" } \ No newline at end of file diff --git a/images/linux/scripts/base/limits.sh b/images/linux/scripts/base/limits.sh index e3c43e336..24041bc99 100644 --- a/images/linux/scripts/base/limits.sh +++ b/images/linux/scripts/base/limits.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e echo '* soft nofile 65536' >> /etc/security/limits.conf echo '* hard nofile 65536' >> /etc/security/limits.conf diff --git a/images/linux/scripts/base/reboot.sh b/images/linux/scripts/base/reboot.sh index 23969fe80..d1bdf7eeb 100644 --- a/images/linux/scripts/base/reboot.sh +++ b/images/linux/scripts/base/reboot.sh @@ -1,8 +1,8 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: reboot.sh ## Desc: Reboot VM ################################################################################ echo "Reboot VM" -sudo reboot \ No newline at end of file +sudo reboot diff --git a/images/linux/scripts/installers/7-zip.sh b/images/linux/scripts/installers/7-zip.sh index 4b753de53..0fa61bb29 100644 --- a/images/linux/scripts/installers/7-zip.sh +++ b/images/linux/scripts/installers/7-zip.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: 7-zip.sh ## Desc: Installs 7-zip ################################################################################ - # Install 7-Zip apt-get update -y apt-get install -y p7zip p7zip-full p7zip-rar diff --git a/images/linux/scripts/installers/aliyun-cli.sh b/images/linux/scripts/installers/aliyun-cli.sh index af45bd07c..56a29e1eb 100644 --- a/images/linux/scripts/installers/aliyun-cli.sh +++ b/images/linux/scripts/installers/aliyun-cli.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: aliyun-cli.sh ## Desc: Installs Alibaba Cloud CLI ################################################################################ - # Install Alibaba Cloud CLI URL=$(curl -s https://api.github.com/repos/aliyun/aliyun-cli/releases/latest | jq -r '.assets[].browser_download_url | select(contains("aliyun-cli-linux"))') wget -P /tmp $URL diff --git a/images/linux/scripts/installers/android.sh b/images/linux/scripts/installers/android.sh index 90d2013ab..0f28d9c8e 100644 --- a/images/linux/scripts/installers/android.sh +++ b/images/linux/scripts/installers/android.sh @@ -1,11 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: android.sh ## Desc: Installs Android SDK ################################################################################ -set -e - # Source the helpers for use with the script source $HELPER_SCRIPTS/os.sh source $HELPER_SCRIPTS/install.sh diff --git a/images/linux/scripts/installers/ansible.sh b/images/linux/scripts/installers/ansible.sh index 9f41af7cb..0f123bbd9 100644 --- a/images/linux/scripts/installers/ansible.sh +++ b/images/linux/scripts/installers/ansible.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: ansible.sh ## Desc: Installs Ansible diff --git a/images/linux/scripts/installers/aws-sam-cli.sh b/images/linux/scripts/installers/aws-sam-cli.sh index ac56144b3..f75c3649b 100644 --- a/images/linux/scripts/installers/aws-sam-cli.sh +++ b/images/linux/scripts/installers/aws-sam-cli.sh @@ -1,11 +1,10 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: aws-sam-cli.sh ## Desc: Installs AWS SAM CLI ## Requires Python >=3.6, must be run as non-root user after toolset installation ################################################################################ - # Download latest aws sam cli sources TarballUrl=$(curl -s https://api.github.com/repos/aws/aws-sam-cli/releases/latest | jq -r '.tarball_url') TarballPath="/tmp/aws-sam-cli.tar.gz" diff --git a/images/linux/scripts/installers/aws.sh b/images/linux/scripts/installers/aws.sh index b2ab32fa1..0a34f1749 100644 --- a/images/linux/scripts/installers/aws.sh +++ b/images/linux/scripts/installers/aws.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: aws.sh ## Desc: Installs the AWS CLI diff --git a/images/linux/scripts/installers/azcopy.sh b/images/linux/scripts/installers/azcopy.sh index 9b57d2680..2d46bef95 100644 --- a/images/linux/scripts/installers/azcopy.sh +++ b/images/linux/scripts/installers/azcopy.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: azcopy.sh ## Desc: Installs AzCopy ################################################################################ - # Install AzCopy7 wget -O azcopy.tar.gz https://aka.ms/downloadazcopylinux64 tar -xf azcopy.tar.gz diff --git a/images/linux/scripts/installers/azpowershell.sh b/images/linux/scripts/installers/azpowershell.sh index a4a159865..a8488af7f 100644 --- a/images/linux/scripts/installers/azpowershell.sh +++ b/images/linux/scripts/installers/azpowershell.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: azpowershell.sh ## Desc: Installed Azure PowerShell diff --git a/images/linux/scripts/installers/azure-cli.sh b/images/linux/scripts/installers/azure-cli.sh index a33ee2f64..f51e870b1 100644 --- a/images/linux/scripts/installers/azure-cli.sh +++ b/images/linux/scripts/installers/azure-cli.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: azure-cli.sh ## Desc: Installed Azure CLI (az) ################################################################################ - # Install Azure CLI (instructions taken from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash diff --git a/images/linux/scripts/installers/azure-devops-cli.sh b/images/linux/scripts/installers/azure-devops-cli.sh index d39761be6..2bedb19f7 100644 --- a/images/linux/scripts/installers/azure-devops-cli.sh +++ b/images/linux/scripts/installers/azure-devops-cli.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: azure-devops-cli.sh ## Desc: Installed Azure DevOps CLI (az devops) ################################################################################ - # AZURE_EXTENSION_DIR shell variable defines where modules are installed # https://docs.microsoft.com/en-us/cli/azure/azure-cli-extensions-overview export AZURE_EXTENSION_DIR=/opt/az/azcliextensions diff --git a/images/linux/scripts/installers/basic.sh b/images/linux/scripts/installers/basic.sh index b8f3e10f6..df9aae08f 100644 --- a/images/linux/scripts/installers/basic.sh +++ b/images/linux/scripts/installers/basic.sh @@ -1,11 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: basic.sh ## Desc: Installs basic command line utilities and dev packages ################################################################################ -set -e - toolset="$INSTALLER_SCRIPT_FOLDER/toolset.json" common_packages=$(jq -r ".apt.common_packages[]" $toolset) cmd_packages=$(jq -r ".apt.cmd_packages[]" $toolset) diff --git a/images/linux/scripts/installers/bazel.sh b/images/linux/scripts/installers/bazel.sh index 2735df10c..8a7c6bcb0 100644 --- a/images/linux/scripts/installers/bazel.sh +++ b/images/linux/scripts/installers/bazel.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: bazel.sh ## Desc: Installs Bazel and Bazelisk (A user-friendly launcher for Bazel) ################################################################################ - # Install bazel curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add - echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list diff --git a/images/linux/scripts/installers/build-essential.sh b/images/linux/scripts/installers/build-essential.sh index af711a1e9..e2c25290d 100644 --- a/images/linux/scripts/installers/build-essential.sh +++ b/images/linux/scripts/installers/build-essential.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: build-essential.sh ## Desc: Installs build-essential package ################################################################################ - source $HELPER_SCRIPTS/install.sh PACKAGE=build-essential diff --git a/images/linux/scripts/installers/clang.sh b/images/linux/scripts/installers/clang.sh index 4a3424fd4..e7261f0a1 100644 --- a/images/linux/scripts/installers/clang.sh +++ b/images/linux/scripts/installers/clang.sh @@ -1,9 +1,8 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: clang.sh ## Desc: Installs Clang compiler ################################################################################ -set -e # Source the helpers for use with the script source $HELPER_SCRIPTS/os.sh diff --git a/images/linux/scripts/installers/cleanup.sh b/images/linux/scripts/installers/cleanup.sh index 387a22402..32a083f9f 100644 --- a/images/linux/scripts/installers/cleanup.sh +++ b/images/linux/scripts/installers/cleanup.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e # before cleanup before=$(df / -Pm | awk 'NR==2{print $4}') @@ -27,4 +27,4 @@ after=$(df / -Pm | awk 'NR==2{print $4}') # display size echo "Before: $before MB" echo "After : $after MB" - echo "Delta : $(($after-$before)) MB" \ No newline at end of file + echo "Delta : $(($after-$before)) MB" diff --git a/images/linux/scripts/installers/cmake.sh b/images/linux/scripts/installers/cmake.sh index 2dbf4cf54..3e51f02f4 100644 --- a/images/linux/scripts/installers/cmake.sh +++ b/images/linux/scripts/installers/cmake.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: cmake.sh ## Desc: Installs CMake ################################################################################ - # Test to see if the software in question is already installed, if not install it echo "Checking to see if the installer script has already been run" if command -v cmake; then diff --git a/images/linux/scripts/installers/codeql-bundle.sh b/images/linux/scripts/installers/codeql-bundle.sh index 9de8a5e41..8d1ed80fa 100644 --- a/images/linux/scripts/installers/codeql-bundle.sh +++ b/images/linux/scripts/installers/codeql-bundle.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: codeql-bundle.sh ## Desc: Install the CodeQL CLI Bundle to the toolcache. diff --git a/images/linux/scripts/installers/complete-snap-setup.sh b/images/linux/scripts/installers/complete-snap-setup.sh index 51e631546..09cd8edd5 100644 --- a/images/linux/scripts/installers/complete-snap-setup.sh +++ b/images/linux/scripts/installers/complete-snap-setup.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: snap-environment.sh ## Desc: Update /etc/environment to include /snap/bin in PATH diff --git a/images/linux/scripts/installers/configure-environment.sh b/images/linux/scripts/installers/configure-environment.sh index fbac4275e..97d3c6068 100644 --- a/images/linux/scripts/installers/configure-environment.sh +++ b/images/linux/scripts/installers/configure-environment.sh @@ -1,3 +1,5 @@ +#!/bin/bash -e + #Set ImageVersion and ImageOS env variables echo ImageVersion=$IMAGE_VERSION | tee -a /etc/environment echo ImageOS=$IMAGE_OS | tee -a /etc/environment @@ -22,4 +24,4 @@ chmod -R 777 $AGENT_TOOLSDIRECTORY # https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html # https://www.suse.com/support/kb/doc/?id=000016692 -echo 'vm.max_map_count=262144' | tee -a /etc/sysctl.conf \ No newline at end of file +echo 'vm.max_map_count=262144' | tee -a /etc/sysctl.conf diff --git a/images/linux/scripts/installers/containers.sh b/images/linux/scripts/installers/containers.sh index a44d73fd7..682cdd131 100644 --- a/images/linux/scripts/installers/containers.sh +++ b/images/linux/scripts/installers/containers.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: containers.sh ## Desc: Installs container tools: podman, buildah and skopeo onto the image ################################################################################ - source /etc/os-release sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/x${NAME}_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/x${NAME}_${VERSION_ID}/Release.key -O Release.key diff --git a/images/linux/scripts/installers/docker-compose.sh b/images/linux/scripts/installers/docker-compose.sh index d2698d5c0..0fa74fc12 100644 --- a/images/linux/scripts/installers/docker-compose.sh +++ b/images/linux/scripts/installers/docker-compose.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: docker-compose.sh ## Desc: Installs Docker Compose ################################################################################ - URL=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r '.assets[].browser_download_url | select(contains("docker-compose-Linux-x86_64"))' | head -1) # Install latest docker-compose from releases diff --git a/images/linux/scripts/installers/docker-moby.sh b/images/linux/scripts/installers/docker-moby.sh index 9ae7f8c86..964fbc92c 100644 --- a/images/linux/scripts/installers/docker-moby.sh +++ b/images/linux/scripts/installers/docker-moby.sh @@ -1,9 +1,8 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: docker-moby.sh ## Desc: Installs docker onto the image ################################################################################ -set -e # Source the helpers for use with the script source $HELPER_SCRIPTS/install.sh diff --git a/images/linux/scripts/installers/dotnetcore-sdk.sh b/images/linux/scripts/installers/dotnetcore-sdk.sh index ee0a95b89..ff966cd28 100644 --- a/images/linux/scripts/installers/dotnetcore-sdk.sh +++ b/images/linux/scripts/installers/dotnetcore-sdk.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: dotnetcore-sdk.sh ## Desc: Installs .NET Core SDK @@ -25,7 +25,6 @@ mksamples() sample=$2 mkdir "$sdk" cd "$sdk" || exit - set -e dotnet help dotnet new globaljson --sdk-version "$sdk" dotnet new "$sample" @@ -36,8 +35,6 @@ mksamples() rm -rf "$sdk" } -set -e - # Disable telemetry export DOTNET_CLI_TELEMETRY_OPTOUT=1 diff --git a/images/linux/scripts/installers/dpkg-config.sh b/images/linux/scripts/installers/dpkg-config.sh index 67b200ed8..d8523b345 100644 --- a/images/linux/scripts/installers/dpkg-config.sh +++ b/images/linux/scripts/installers/dpkg-config.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e # This is the anti-frontend. It never interacts with you at all, # and makes the default answers be used for all questions. It diff --git a/images/linux/scripts/installers/erlang.sh b/images/linux/scripts/installers/erlang.sh index aa94e3a2b..c8ec5a1bc 100644 --- a/images/linux/scripts/installers/erlang.sh +++ b/images/linux/scripts/installers/erlang.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: erlang.sh ## Desc: Installs erlang ################################################################################ - source_list=/etc/apt/sources.list.d/eslerlang.list # Install Erlang diff --git a/images/linux/scripts/installers/example.sh b/images/linux/scripts/installers/example.sh index 895de5d35..58e71b06e 100644 --- a/images/linux/scripts/installers/example.sh +++ b/images/linux/scripts/installers/example.sh @@ -1,11 +1,10 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: example.sh ## Desc: This is an example script that can be copied to add a new software ## installer to the image ################################################################################ - # Test to see if the software in question is already installed, if not install it echo "Checking to see if the installer script has already been run" if [ -z $EXAMPLE_VAR ]; then diff --git a/images/linux/scripts/installers/firefox.sh b/images/linux/scripts/installers/firefox.sh index 3287bf168..a2cd8521f 100644 --- a/images/linux/scripts/installers/firefox.sh +++ b/images/linux/scripts/installers/firefox.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: firefox.sh ## Desc: Installs Firefox ################################################################################ - # Install Firefox apt-get install -y firefox diff --git a/images/linux/scripts/installers/gcc.sh b/images/linux/scripts/installers/gcc.sh index b59eae7f6..3b696e9ff 100644 --- a/images/linux/scripts/installers/gcc.sh +++ b/images/linux/scripts/installers/gcc.sh @@ -1,11 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: gcc.sh ## Desc: Installs GNU C++ ################################################################################ -set -e - # Source the helpers for use with the script source $HELPER_SCRIPTS/os.sh diff --git a/images/linux/scripts/installers/gfortran.sh b/images/linux/scripts/installers/gfortran.sh index c37fccf27..dc49cb446 100644 --- a/images/linux/scripts/installers/gfortran.sh +++ b/images/linux/scripts/installers/gfortran.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: gfortran.sh ## Desc: Installs GNU Fortran ################################################################################ - function InstallFortran { version=$1 diff --git a/images/linux/scripts/installers/git.sh b/images/linux/scripts/installers/git.sh index 331e5f813..90b0f10ec 100644 --- a/images/linux/scripts/installers/git.sh +++ b/images/linux/scripts/installers/git.sh @@ -1,9 +1,8 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: git.sh ## Desc: Installs Git ################################################################################ -set -e # Source the helpers for use with the script source "$HELPER_SCRIPTS"/install.sh @@ -52,3 +51,7 @@ else echo "[!] Hub CLI was not installed" exit 1 fi + +# Add well-known SSH host keys to known_hosts +ssh-keyscan -t rsa github.com >> /etc/ssh/ssh_known_hosts +ssh-keyscan -t rsa ssh.dev.azure.com >> /etc/ssh/ssh_known_hosts diff --git a/images/linux/scripts/installers/github-cli.sh b/images/linux/scripts/installers/github-cli.sh index c9bec1fc6..d4eccb125 100644 --- a/images/linux/scripts/installers/github-cli.sh +++ b/images/linux/scripts/installers/github-cli.sh @@ -1,11 +1,10 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: github-cli.sh ## Desc: Installs GitHub CLI ## Must be run as non-root user after homebrew ################################################################################ - # Install GitHub CLI url=$(curl -s https://api.github.com/repos/cli/cli/releases/latest | jq -r '.assets[].browser_download_url|select(contains("linux") and contains("amd64") and contains(".deb"))') wget $url diff --git a/images/linux/scripts/installers/google-chrome.sh b/images/linux/scripts/installers/google-chrome.sh index a6ace2f38..44316ece5 100644 --- a/images/linux/scripts/installers/google-chrome.sh +++ b/images/linux/scripts/installers/google-chrome.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: google-chrome.sh ## Desc: Installs google-chrome and chromedriver ################################################################################ - LSB_RELEASE=$(lsb_release -rs) wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - diff --git a/images/linux/scripts/installers/google-cloud-sdk.sh b/images/linux/scripts/installers/google-cloud-sdk.sh index 147d8d4fb..a6d8227c8 100644 --- a/images/linux/scripts/installers/google-cloud-sdk.sh +++ b/images/linux/scripts/installers/google-cloud-sdk.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: google-cloud-sdk.sh ## Desc: Installs the Google Cloud SDK ################################################################################ - # Install the Google Cloud SDK echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - diff --git a/images/linux/scripts/installers/haskell.sh b/images/linux/scripts/installers/haskell.sh index b8bfa5efe..9b351cc31 100644 --- a/images/linux/scripts/installers/haskell.sh +++ b/images/linux/scripts/installers/haskell.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: haskell.sh ## Desc: Installs Haskell diff --git a/images/linux/scripts/installers/heroku.sh b/images/linux/scripts/installers/heroku.sh index c4c0e588c..86d537869 100644 --- a/images/linux/scripts/installers/heroku.sh +++ b/images/linux/scripts/installers/heroku.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: heroku.sh ## Desc: Installs Heroku CLI ################################################################################ - # Install Heroku CLI curl https://cli-assets.heroku.com/install-ubuntu.sh | sh diff --git a/images/linux/scripts/installers/hhvm.sh b/images/linux/scripts/installers/hhvm.sh index 3010db873..e44f4b3a5 100644 --- a/images/linux/scripts/installers/hhvm.sh +++ b/images/linux/scripts/installers/hhvm.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: hhvm.sh ## Desc: Installs hhvm diff --git a/images/linux/scripts/installers/homebrew-validate.sh b/images/linux/scripts/installers/homebrew-validate.sh index 88d61f946..0806838d7 100644 --- a/images/linux/scripts/installers/homebrew-validate.sh +++ b/images/linux/scripts/installers/homebrew-validate.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: homebrew-validate.sh ## Desc: Validate the Homebrew can run after reboot without extra configuring diff --git a/images/linux/scripts/installers/homebrew.sh b/images/linux/scripts/installers/homebrew.sh index 370d9d09d..865923f25 100644 --- a/images/linux/scripts/installers/homebrew.sh +++ b/images/linux/scripts/installers/homebrew.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: homebrew.sh ## Desc: Installs the Homebrew on Linux diff --git a/images/linux/scripts/installers/hosted-tool-cache.sh b/images/linux/scripts/installers/hosted-tool-cache.sh index d40a4922a..23c09be8d 100644 --- a/images/linux/scripts/installers/hosted-tool-cache.sh +++ b/images/linux/scripts/installers/hosted-tool-cache.sh @@ -1,13 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: hosted-tool-cache.sh ## Desc: Downloads and installs hosted tools cache ################################################################################ - -# Fail out if any setups fail -set -e - TOOLCACHE_REGISTRY="npm.pkg.github.com" echo "Configure npm to use github package registry for '@actions' scope" diff --git a/images/linux/scripts/installers/image-magick.sh b/images/linux/scripts/installers/image-magick.sh index e01c933a7..daf0d62b8 100644 --- a/images/linux/scripts/installers/image-magick.sh +++ b/images/linux/scripts/installers/image-magick.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: image-magick.sh ## Desc: Installs ImageMagick ################################################################################ - # Install ImageMagick apt-get install -y --no-install-recommends --fix-missing \ imagemagick \ diff --git a/images/linux/scripts/installers/java-tools.sh b/images/linux/scripts/installers/java-tools.sh index 46aa8b285..ea95a56ba 100644 --- a/images/linux/scripts/installers/java-tools.sh +++ b/images/linux/scripts/installers/java-tools.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: java-tools.sh ## Desc: Installs Java and related tooling (Ant, Gradle, Maven) @@ -6,8 +6,6 @@ source $HELPER_SCRIPTS/os.sh -set -e - function javaTool { if [[ "$2" =~ ([1]{0,1}.)?$DEFAULT_JDK_VERSION.* ]]; then echo "$1 $2 is equal to default one $DEFAULT_JDK_VERSION" diff --git a/images/linux/scripts/installers/julia.sh b/images/linux/scripts/installers/julia.sh index 079890a19..cd0ee0ed9 100644 --- a/images/linux/scripts/installers/julia.sh +++ b/images/linux/scripts/installers/julia.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: julia.sh ## Desc: Installs Julia, and adds Julia to the path ################################################################################ - # This function fetches the latest Julia release from the GitHub API # Based on https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c function GetLatestJuliaRelease () { diff --git a/images/linux/scripts/installers/kind.sh b/images/linux/scripts/installers/kind.sh index 3a312a2e3..419f4e60f 100644 --- a/images/linux/scripts/installers/kind.sh +++ b/images/linux/scripts/installers/kind.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: kind.sh ## Desc: Installs kind ################################################################################ - # Install KIND URL=$(curl -s https://api.github.com/repos/kubernetes-sigs/kind/releases/latest | jq -r '.assets[].browser_download_url | select(contains("kind-linux-amd64"))') curl -L -o /usr/local/bin/kind $URL diff --git a/images/linux/scripts/installers/kubernetes-tools.sh b/images/linux/scripts/installers/kubernetes-tools.sh index a25cb0f26..e74515ea2 100644 --- a/images/linux/scripts/installers/kubernetes-tools.sh +++ b/images/linux/scripts/installers/kubernetes-tools.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: kubernetes-tools.sh ## Desc: Installs kubectl, helm, kustomize ################################################################################ - ## Install kubectl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - touch /etc/apt/sources.list.d/kubernetes.list diff --git a/images/linux/scripts/installers/leiningen.sh b/images/linux/scripts/installers/leiningen.sh index 56079a34d..059dfdb56 100644 --- a/images/linux/scripts/installers/leiningen.sh +++ b/images/linux/scripts/installers/leiningen.sh @@ -1,12 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: leiningen.sh ## Desc: Installs Leiningen ################################################################################ - -set -e - LEIN_BIN=/usr/local/bin/lein curl -s https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein > $LEIN_BIN chmod 0755 $LEIN_BIN diff --git a/images/linux/scripts/installers/mercurial.sh b/images/linux/scripts/installers/mercurial.sh index ad972d74f..4c3493d8c 100644 --- a/images/linux/scripts/installers/mercurial.sh +++ b/images/linux/scripts/installers/mercurial.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: mercurial.sh ## Desc: Installs Mercurial diff --git a/images/linux/scripts/installers/miniconda.sh b/images/linux/scripts/installers/miniconda.sh index 29eebd0ca..3dae1e1bb 100644 --- a/images/linux/scripts/installers/miniconda.sh +++ b/images/linux/scripts/installers/miniconda.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: miniconda.sh ## Desc: Installs miniconda ################################################################################ - # Install Miniconda curl -sL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o miniconda.sh \ && chmod +x miniconda.sh \ diff --git a/images/linux/scripts/installers/mongodb.sh b/images/linux/scripts/installers/mongodb.sh index 2d012c61f..5fd1b36a0 100644 --- a/images/linux/scripts/installers/mongodb.sh +++ b/images/linux/scripts/installers/mongodb.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: homebrew.sh ## Desc: Installs Mongo DB diff --git a/images/linux/scripts/installers/mono.sh b/images/linux/scripts/installers/mono.sh index 9e4968f36..bdce62484 100644 --- a/images/linux/scripts/installers/mono.sh +++ b/images/linux/scripts/installers/mono.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: cmake.sh ## Desc: Installs Mono ################################################################################ - LSB_CODENAME=$(lsb_release -cs) # Test to see if the software in question is already installed, if not install it diff --git a/images/linux/scripts/installers/mysql.sh b/images/linux/scripts/installers/mysql.sh index 24cb5cf26..9abb97931 100644 --- a/images/linux/scripts/installers/mysql.sh +++ b/images/linux/scripts/installers/mysql.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: mysql.sh ## Desc: Installs MySQL Client ################################################################################ - export ACCEPT_EULA=Y if isUbuntu16 || isUbuntu18 ; then @@ -44,7 +43,6 @@ if ! command -v mysql; then exit 1 fi -set -e mysql -vvv -e 'CREATE DATABASE smoke_test' -uroot -proot mysql -vvv -e 'DROP DATABASE smoke_test' -uroot -proot set +e diff --git a/images/linux/scripts/installers/netlify.sh b/images/linux/scripts/installers/netlify.sh index b737d4759..42121ab7e 100644 --- a/images/linux/scripts/installers/netlify.sh +++ b/images/linux/scripts/installers/netlify.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: netlify.sh ## Desc: Installs the Netlify CLI ################################################################################ - # Install the Netlify CLI npm i -g netlify-cli diff --git a/images/linux/scripts/installers/nodejs.sh b/images/linux/scripts/installers/nodejs.sh index 378236a8b..e0bb6981c 100644 --- a/images/linux/scripts/installers/nodejs.sh +++ b/images/linux/scripts/installers/nodejs.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: nodejs.sh ## Desc: Installs Node.js LTS and related tooling (Gulp, Grunt) ################################################################################ - # Install LTS Node.js and related build tools curl -sL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s -- -ny - ~/n/bin/n lts diff --git a/images/linux/scripts/installers/nvm.sh b/images/linux/scripts/installers/nvm.sh index 619eade84..b0d995138 100644 --- a/images/linux/scripts/installers/nvm.sh +++ b/images/linux/scripts/installers/nvm.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: nvm.sh ## Desc: Installs Nvm ################################################################################ - export NVM_DIR="/etc/skel/.nvm" mkdir $NVM_DIR VERSION=$(curl -s https://api.github.com/repos/nvm-sh/nvm/releases/latest | jq -r '.tag_name') diff --git a/images/linux/scripts/installers/oc.sh b/images/linux/scripts/installers/oc.sh index 88894e3f5..2310f33f0 100644 --- a/images/linux/scripts/installers/oc.sh +++ b/images/linux/scripts/installers/oc.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: oc.sh ## Desc: Installs the OC CLI ################################################################################ - # Install the oc CLI curl "https://mirror.openshift.com/pub/openshift-v4/clients/oc/latest/linux/oc.tar.gz" > oc.tar.gz tar xvzf oc.tar.gz diff --git a/images/linux/scripts/installers/oras-cli.sh b/images/linux/scripts/installers/oras-cli.sh index e615d25de..3c18865b2 100644 --- a/images/linux/scripts/installers/oras-cli.sh +++ b/images/linux/scripts/installers/oras-cli.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: oras-cli.sh ## Desc: Installs ORAS CLI diff --git a/images/linux/scripts/installers/packer.sh b/images/linux/scripts/installers/packer.sh index 25897a780..b45a87ac9 100644 --- a/images/linux/scripts/installers/packer.sh +++ b/images/linux/scripts/installers/packer.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: packer.sh ## Desc: Installs packer ################################################################################ - # Install Packer PACKER_VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packer | jq -r .current_version) curl -LO "https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_linux_amd64.zip" diff --git a/images/linux/scripts/installers/phantomjs.sh b/images/linux/scripts/installers/phantomjs.sh index 093056db2..a774b2d0a 100644 --- a/images/linux/scripts/installers/phantomjs.sh +++ b/images/linux/scripts/installers/phantomjs.sh @@ -1,11 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: phantomjs.sh ## Desc: Installs PhantomJS ################################################################################ -set -e - # Install PhantomJS apt-get install -y chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev PHANTOM_JS=phantomjs-2.1.1-linux-x86_64 diff --git a/images/linux/scripts/installers/php.sh b/images/linux/scripts/installers/php.sh index 35afa4a4f..b8e2b8ed1 100644 --- a/images/linux/scripts/installers/php.sh +++ b/images/linux/scripts/installers/php.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: php.sh ## Desc: Installs php @@ -8,8 +8,6 @@ source $HELPER_SCRIPTS/etc-environment.sh source $HELPER_SCRIPTS/os.sh -set -e - # add repository apt-add-repository ppa:ondrej/php -y apt-get update diff --git a/images/linux/scripts/installers/pollinate.sh b/images/linux/scripts/installers/pollinate.sh index bdb2ce36c..fe2350d94 100644 --- a/images/linux/scripts/installers/pollinate.sh +++ b/images/linux/scripts/installers/pollinate.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: pollinate.sh ## Desc: Installs Pollinate ################################################################################ - # Install Pollinate apt-get install -y --no-install-recommends pollinate diff --git a/images/linux/scripts/installers/post-deployment.sh b/images/linux/scripts/installers/post-deployment.sh index 2864dae4f..95a2e2fa9 100644 --- a/images/linux/scripts/installers/post-deployment.sh +++ b/images/linux/scripts/installers/post-deployment.sh @@ -1,9 +1,11 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: post-deployment.sh ## Desc: Post deployment actions ################################################################################ +mv -f /imagegeneration/post-generation /opt + # set chmod -R 777 /opt if [[ -d "/opt" ]]; then echo "chmod -R 777 /opt" @@ -14,3 +16,11 @@ fi rm -rf $HELPER_SCRIPT_FOLDER rm -rf $INSTALLER_SCRIPT_FOLDER chmod 755 $IMAGE_FOLDER + +# Check PATH +if [[ $PATH == \"*\" ]] +then + echo "ERROR: PATH contains quotes" + echo "PATH = $PATH" + exit 1 +fi diff --git a/images/linux/scripts/installers/postgresql.sh b/images/linux/scripts/installers/postgresql.sh index ae5ffbb25..4c652fdf2 100644 --- a/images/linux/scripts/installers/postgresql.sh +++ b/images/linux/scripts/installers/postgresql.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: postgresql.sh ## Desc: Installs Postgresql ################################################################################ - #Preparing repo for PostgreSQL 12. wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list @@ -25,4 +24,4 @@ pg_isready # Disable postgresql.service systemctl is-active --quiet postgresql.service && systemctl stop postgresql.service -systemctl disable postgresql.service \ No newline at end of file +systemctl disable postgresql.service diff --git a/images/linux/scripts/installers/powershellcore.sh b/images/linux/scripts/installers/powershellcore.sh index e0c19ba7c..0ac52072d 100644 --- a/images/linux/scripts/installers/powershellcore.sh +++ b/images/linux/scripts/installers/powershellcore.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: powershellcore.sh ## Desc: Installs powershellcore diff --git a/images/linux/scripts/installers/preimagedata.sh b/images/linux/scripts/installers/preimagedata.sh index 26be3bfa4..d9f7b22fe 100644 --- a/images/linux/scripts/installers/preimagedata.sh +++ b/images/linux/scripts/installers/preimagedata.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e imagedata_file=$IMAGEDATA_FILE image_version=$IMAGE_VERSION @@ -29,4 +29,4 @@ cat < $imagedata_file "detail": "Environment: ${image_label}\nVersion: ${image_version}\nIncluded Software: ${software_url}" } ] -EOF \ No newline at end of file +EOF diff --git a/images/linux/scripts/installers/pulumi.sh b/images/linux/scripts/installers/pulumi.sh index bfdad2d13..444a3e7f3 100644 --- a/images/linux/scripts/installers/pulumi.sh +++ b/images/linux/scripts/installers/pulumi.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: pulumi.sh ## Desc: Installs Pulumi diff --git a/images/linux/scripts/installers/pypy.sh b/images/linux/scripts/installers/pypy.sh index cc707a3e4..99dab0a77 100644 --- a/images/linux/scripts/installers/pypy.sh +++ b/images/linux/scripts/installers/pypy.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: pypy.sh ## Desc: Installs PyPy @@ -76,8 +76,6 @@ pypyVersions="$(cat /tmp/pypyUrls.html | grep 'linux64' | awk -v uri="$uri" -F'> toolset="$INSTALLER_SCRIPT_FOLDER/toolset.json" toolsetVersions=$(jq -r '.toolcache[] | select(.name | contains("PyPy")) | .versions[]' $toolset) -# Fail out if any setups fail -set -e for toolsetVersion in $toolsetVersions; do latestMajorPyPyVersion=$(echo "${pypyVersions}" | grep -E "pypy${toolsetVersion}-v[0-9]+\.[0-9]+\.[0-9]+-" | head -1) @@ -90,4 +88,4 @@ for toolsetVersion in $toolsetVersions; do InstallPyPy $latestMajorPyPyVersion done -chown -R "$SUDO_USER:$SUDO_USER" "$AGENT_TOOLSDIRECTORY/PyPy" \ No newline at end of file +chown -R "$SUDO_USER:$SUDO_USER" "$AGENT_TOOLSDIRECTORY/PyPy" diff --git a/images/linux/scripts/installers/python.sh b/images/linux/scripts/installers/python.sh index 62dc8d359..8993e1d3a 100644 --- a/images/linux/scripts/installers/python.sh +++ b/images/linux/scripts/installers/python.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: python.sh ## Desc: Installs Python 2/3 diff --git a/images/linux/scripts/installers/r.sh b/images/linux/scripts/installers/r.sh index cca86e1bb..86ad96bd6 100644 --- a/images/linux/scripts/installers/r.sh +++ b/images/linux/scripts/installers/r.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e # Source the helpers for use with the script source $HELPER_SCRIPTS/os.sh diff --git a/images/linux/scripts/installers/rndgenerator.sh b/images/linux/scripts/installers/rndgenerator.sh index cdb78edf1..98f1dbaa1 100644 --- a/images/linux/scripts/installers/rndgenerator.sh +++ b/images/linux/scripts/installers/rndgenerator.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: rndgenerator.sh ## Desc: Install random number generator ################################################################################ - # Install haveged apt-get -y install haveged diff --git a/images/linux/scripts/installers/ruby.sh b/images/linux/scripts/installers/ruby.sh index 8be6d0fa9..bf2c757d9 100644 --- a/images/linux/scripts/installers/ruby.sh +++ b/images/linux/scripts/installers/ruby.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: ruby.sh ## Desc: Installs Ruby requirements ################################################################################ - sudo apt-get install ruby-full sudo gem update --system diff --git a/images/linux/scripts/installers/rust.sh b/images/linux/scripts/installers/rust.sh index a211e791b..c86f4d6ad 100644 --- a/images/linux/scripts/installers/rust.sh +++ b/images/linux/scripts/installers/rust.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: rust.sh ## Desc: Installs Rust diff --git a/images/linux/scripts/installers/sbt.sh b/images/linux/scripts/installers/sbt.sh index 166dc18b5..a43115083 100644 --- a/images/linux/scripts/installers/sbt.sh +++ b/images/linux/scripts/installers/sbt.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: scala.sh ## Desc: Installs sbt ################################################################################ - # Install sbt # https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Linux.html echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list diff --git a/images/linux/scripts/installers/selenium.sh b/images/linux/scripts/installers/selenium.sh index d9b5e2794..d662fa009 100644 --- a/images/linux/scripts/installers/selenium.sh +++ b/images/linux/scripts/installers/selenium.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: selenium.sh ## Desc: Installs selenium server ################################################################################ - # Determine latest selenium standalone server version SELENIUM_LATEST_VERSION_URL=https://api.github.com/repos/SeleniumHQ/selenium/releases/latest SELENIUM_VERSION=$(curl $SELENIUM_LATEST_VERSION_URL | jq '.name' | tr -d '"' | cut -d ' ' -f 2) diff --git a/images/linux/scripts/installers/sphinx.sh b/images/linux/scripts/installers/sphinx.sh index 425bb7fd3..2ef22f46d 100644 --- a/images/linux/scripts/installers/sphinx.sh +++ b/images/linux/scripts/installers/sphinx.sh @@ -1,9 +1,8 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: sphinx.sh ## Desc: Installs Sphinx ################################################################################ - # Install Sphinx apt-get install -y sphinxsearch diff --git a/images/linux/scripts/installers/subversion.sh b/images/linux/scripts/installers/subversion.sh index 3f51d46a0..77b2d0276 100644 --- a/images/linux/scripts/installers/subversion.sh +++ b/images/linux/scripts/installers/subversion.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: subversion.sh ## Desc: Installs Subversion client ################################################################################ - # Install Subversion apt-get install -y --no-install-recommends subversion diff --git a/images/linux/scripts/installers/swift.sh b/images/linux/scripts/installers/swift.sh index 318d3973f..73c8fd297 100644 --- a/images/linux/scripts/installers/swift.sh +++ b/images/linux/scripts/installers/swift.sh @@ -1,15 +1,15 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: swift.sh ## Desc: Installs Swift ################################################################################ - # Install image_label="$(lsb_release -rs)" -swift_version=$(curl -s https://swift.org/download/ | grep -m1 "id=\"swift-" | awk -F"[ <]" '{print $4}') +swift_version=$(curl -s -L -N https://swift.org/download|awk -F"[ <]" '/id="swift-/ {print $4; exit}') wget -P /tmp https://swift.org/builds/swift-$swift_version-release/ubuntu${image_label//./}/swift-$swift_version-RELEASE/swift-$swift_version-RELEASE-ubuntu$image_label.tar.gz + tar xzf /tmp/swift-$swift_version-RELEASE-ubuntu$image_label.tar.gz mv swift-$swift_version-RELEASE-ubuntu$image_label /usr/share/swift diff --git a/images/linux/scripts/installers/swig.sh b/images/linux/scripts/installers/swig.sh index 7972e8827..b2e5a202e 100644 --- a/images/linux/scripts/installers/swig.sh +++ b/images/linux/scripts/installers/swig.sh @@ -1,5 +1,4 @@ -#!/bin/bash - +#!/bin/bash -e # Install Swig sudo apt-get install -y swig diff --git a/images/linux/scripts/installers/terraform.sh b/images/linux/scripts/installers/terraform.sh index 4c7e6e762..90c25c65a 100644 --- a/images/linux/scripts/installers/terraform.sh +++ b/images/linux/scripts/installers/terraform.sh @@ -1,10 +1,9 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: terraform.sh ## Desc: Installs terraform ################################################################################ - # Install Terraform TERRAFORM_VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/terraform | jq -r .current_version) curl -LO "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip" diff --git a/images/linux/scripts/installers/test-toolcache.sh b/images/linux/scripts/installers/test-toolcache.sh index 455ddec09..84d93446e 100644 --- a/images/linux/scripts/installers/test-toolcache.sh +++ b/images/linux/scripts/installers/test-toolcache.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: test-toolcache.sh ## Desc: Test Python and Ruby versions in tools cache @@ -51,9 +51,6 @@ Test_Hostedtoolcache_Tool() { fi } -# Fail out if any tests fail -set -e - # define dictionary for key_alias and its values declare -A TOOLCACHE_KEY_VALUE diff --git a/images/linux/scripts/installers/validate-disk-space.sh b/images/linux/scripts/installers/validate-disk-space.sh index 49863064e..c81b9fa75 100644 --- a/images/linux/scripts/installers/validate-disk-space.sh +++ b/images/linux/scripts/installers/validate-disk-space.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: validate-disk-space.sh ## Desc: Validate free disk space @@ -17,4 +17,4 @@ fi if [ $availableSpaceMB -le $minimumFreeSpaceMB ]; then echo "Not enough disk space on the image (minimum available space: $minimumFreeSpaceMB MB)" exit 1 -fi \ No newline at end of file +fi diff --git a/images/linux/scripts/installers/vcpkg.sh b/images/linux/scripts/installers/vcpkg.sh index ba7cd01cf..e2d9688ce 100644 --- a/images/linux/scripts/installers/vcpkg.sh +++ b/images/linux/scripts/installers/vcpkg.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: vcpkg.sh ## Desc: Installs vcpkg diff --git a/images/linux/scripts/installers/vercel.sh b/images/linux/scripts/installers/vercel.sh index 4e0d41ae6..7f48d7c28 100644 --- a/images/linux/scripts/installers/vercel.sh +++ b/images/linux/scripts/installers/vercel.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ################################################################################ ## File: vercel.sh ## Desc: Installs the Vercel CLI diff --git a/images/linux/ubuntu1604.json b/images/linux/ubuntu1604.json index 8a4255ec7..5e45fdedc 100644 --- a/images/linux/ubuntu1604.json +++ b/images/linux/ubuntu1604.json @@ -89,6 +89,11 @@ "source": "{{template_dir}}/scripts/installers", "destination": "{{user `installer_script_folder`}}" }, + { + "type": "file", + "source": "{{ template_dir }}/post-generation", + "destination": "{{user `image_folder`}}" + }, { "type": "file", "source": "{{ template_dir }}/scripts/SoftwareReport", diff --git a/images/linux/ubuntu1804.json b/images/linux/ubuntu1804.json index daf40ce81..e6af0e41e 100644 --- a/images/linux/ubuntu1804.json +++ b/images/linux/ubuntu1804.json @@ -92,6 +92,11 @@ "source": "{{template_dir}}/scripts/installers", "destination": "{{user `installer_script_folder`}}" }, + { + "type": "file", + "source": "{{ template_dir }}/post-generation", + "destination": "{{user `image_folder`}}" + }, { "type": "file", "source": "{{ template_dir }}/scripts/SoftwareReport", diff --git a/images/linux/ubuntu2004.json b/images/linux/ubuntu2004.json index 740fe097f..9b4181ede 100644 --- a/images/linux/ubuntu2004.json +++ b/images/linux/ubuntu2004.json @@ -94,6 +94,11 @@ "source": "{{template_dir}}/scripts/installers", "destination": "{{user `installer_script_folder`}}" }, + { + "type": "file", + "source": "{{ template_dir }}/post-generation", + "destination": "{{user `installer_script_folder`}}" + }, { "type": "file", "source": "{{ template_dir }}/scripts/SoftwareReport", diff --git a/images/macos/provision/core/android-toolsets.sh b/images/macos/provision/core/android-toolsets.sh index a3b8aa97f..093a133ce 100755 --- a/images/macos/provision/core/android-toolsets.sh +++ b/images/macos/provision/core/android-toolsets.sh @@ -1,8 +1,26 @@ #!/bin/bash -e source ~/utils/utils.sh -ANDROID_PLATFORM_LIST=($(get_toolset_value '.android."platform-list"[]')) -ANDROID_BUILD_TOOLS=($(get_toolset_value '.android."build-tools"[]')) +function filter_components_by_version { + minimumVersion=$1 + shift + toolsArr=("$@") + + for item in ${toolsArr[@]} + do + # take the last argument after spliting string by ';'' and '-'' + version=$(echo "${item##*[-;]}") + if verlte $minimumVersion $version + then + components+=($item) + fi + done +} + +components=() + +ANDROID_PLATFORM=($(get_toolset_value '.android.platform_min_version')) +ANDROID_BUILD_TOOL=($(get_toolset_value '.android.build_tools_min_version')) ANDROID_EXTRA_LIST=($(get_toolset_value '.android."extra-list"[]')) ANDROID_ADDON_LIST=($(get_toolset_value '.android."addon-list"[]')) @@ -48,17 +66,14 @@ echo y | $SDKMANAGER "cmake;3.6.4111459" echo "Installing latest ndk..." echo y | $SDKMANAGER "ndk-bundle" -for platform_name in "${ANDROID_PLATFORM_LIST[@]}" -do - echo "Installing platform $platform_name ..." - echo y | $SDKMANAGER "platforms;$platform_name" -done +availablePlatforms=($(${ANDROID_HOME}/tools/bin/sdkmanager --list | grep "platforms;android-" | cut -d"|" -f 1 | sort -u)) +filter_components_by_version $ANDROID_PLATFORM "${availablePlatforms[@]}" -for build_tools_version in "${ANDROID_BUILD_TOOLS[@]}" -do - echo "Installing build tools $build_tools_version ..." - echo y | $SDKMANAGER "build-tools;$build_tools_version" -done +allBuildTools=($(${ANDROID_HOME}/tools/bin/sdkmanager --list --include_obsolete | grep "build-tools;" | cut -d"|" -f 1 | sort -u)) +availableBuildTools=$(echo ${allBuildTools[@]//*rc[0-9]/}) +filter_components_by_version $ANDROID_BUILD_TOOL "${availableBuildTools[@]}" + +echo "y" | ${ANDROID_HOME}/tools/bin/sdkmanager ${components[@]} for extra_name in "${ANDROID_EXTRA_LIST[@]}" do diff --git a/images/macos/provision/utils/utils.sh b/images/macos/provision/utils/utils.sh index 6a924e03d..85881c7e3 100755 --- a/images/macos/provision/utils/utils.sh +++ b/images/macos/provision/utils/utils.sh @@ -91,4 +91,9 @@ get_latest_xcode_from_toolset() { get_default_xcode_from_toolset() { echo $(get_toolset_value '.xcode.default') +} + +verlte() { + sortedVersion=$(echo -e "$1\n$2" | sort -V | head -n1) + [ "$1" = "$sortedVersion" ] } \ No newline at end of file diff --git a/images/macos/software-report/SoftwareReport.Android.psm1 b/images/macos/software-report/SoftwareReport.Android.psm1 index 75f1d9f86..ca4fcc208 100644 --- a/images/macos/software-report/SoftwareReport.Android.psm1 +++ b/images/macos/software-report/SoftwareReport.Android.psm1 @@ -28,6 +28,11 @@ function Get-AndroidInstalledPackages { return $androidInstalledPackages } +function Get-AndroidPackages { + $androidSDKManagerPath = Get-AndroidSDKManagerPath + $androidPackages = & $androidSDKManagerPath --list --verbose + return $androidPackages +} function Build-AndroidTable { Write-Host "Build-AndroidTable" diff --git a/images/macos/software-report/SoftwareReport.Generator.ps1 b/images/macos/software-report/SoftwareReport.Generator.ps1 index aaf4f6446..9bcef14ce 100644 --- a/images/macos/software-report/SoftwareReport.Generator.ps1 +++ b/images/macos/software-report/SoftwareReport.Generator.ps1 @@ -141,7 +141,7 @@ $aria2Version = Run-Command "aria2c --version" | Select-Object -First 1 | Take-P $azcopyVersion = Run-Command "azcopy --version" | Take-Part -Part 2 $zstdVersion = Run-Command "zstd --version" | Take-Part -Part 1 -Delimiter "v" | Take-Part -Part 0 -Delimiter "," $bazelVersion = Run-Command "bazel --version" | Take-Part -Part 0 -Delimiter "-" -$bazeliskVersion = Run-Command "bazelisk version" | Select-String "Bazelisk version:" | Take-Part -Part 1 -Delimiter ":" +$bazeliskVersion = Run-Command "brew list bazelisk --versions" $packerVersion = Run-Command "packer --version" $helmVersion = Run-Command "helm version --short" $mongo = Run-Command "mongo --version" | Select-String "MongoDB shell version" | Take-Part -Part 3 @@ -167,7 +167,7 @@ $markdown += New-MDList -Style Unordered -NoNewLine -Lines @( "azcopy $azcopyVersion", "zstd $zstdVersion", $bazelVersion, - "bazelisk $($bazeliskVersion.Trim())", + $bazeliskVersion, "helm $helmVersion", "mongo $mongo", "mongod $mongod", diff --git a/images/macos/tests/Android.Tests.ps1 b/images/macos/tests/Android.Tests.ps1 index a7420b23e..c14a02c5e 100644 --- a/images/macos/tests/Android.Tests.ps1 +++ b/images/macos/tests/Android.Tests.ps1 @@ -1,10 +1,22 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" +Import-Module "$PSScriptRoot/../software-report/SoftwareReport.Android.psm1" $os = Get-OSVersion Describe "Android" { $androidNdkToolchains = @("mips64el-linux-android-4.9", "mipsel-linux-android-4.9") + $androidSdkManagerPackages = Get-AndroidPackages + [int]$platformMinVersion = Get-ToolsetValue "android.platform_min_version" + [version]$buildToolsMinVersion = Get-ToolsetValue "android.build_tools_min_version" + + $platforms = (($androidSdkManagerPackages | Where-Object { "$_".StartsWith("platforms;") }) -replace 'platforms;', '' | + Where-Object { [int]$_.Split("-")[1] -ge $platformMinVersion } | Sort-Object { [int]$_.Split("-")[1] } -Unique | + ForEach-Object { "platforms/${_}" }) + + $buildTools = (($androidSdkManagerPackages | Where-Object { "$_".StartsWith("build-tools;") }) -replace 'build-tools;', '' | + Where-Object { [version]$_ -ge $buildToolsMinVersion } | Sort-Object { [version]$_ } -Unique | + ForEach-Object { "build-tools/${_}" }) $androidPackages = @( "tools", @@ -12,8 +24,8 @@ Describe "Android" { "tools/proguard", "ndk-bundle", "cmake", - (Get-ToolsetValue "android.platform-list" | ForEach-Object { "platforms/${_}" }), - (Get-ToolsetValue "android.build-tools" | ForEach-Object { "build-tools/${_}" }), + $platforms, + $buildTools, (Get-ToolsetValue "android.extra-list" | ForEach-Object { "extras/${_}" }), (Get-ToolsetValue "android.addon-list" | ForEach-Object { "add-ons/${_}" }) ) | ForEach-Object { $_ } @@ -26,7 +38,7 @@ Describe "Android" { [Parameter(Mandatory=$true)] [string]$PackageName ) - + # Convert 'm2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1' -> # 'm2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-beta1' $PackageName = $PackageName.Replace(";", "/") @@ -62,14 +74,14 @@ Describe "Android" { $rawContent = Get-Content $ndkBundlePath -Raw $rawContent | Should -BeLikeExactly "*Revision = 21.*" } - + It "Android NDK version r18b is installed" { $ndk18BundlePath = Join-Path $ANDROID_SDK_DIR "ndk" "18.1.5063045" "source.properties" $rawContent = Get-Content $ndk18BundlePath -Raw $rawContent | Should -BeLikeExactly "*Revision = 18.*" } } - + It "HAXM is installed" { $haxmPath = Join-Path $ANDROID_SDK_DIR "extras" "intel" "Hardware_Accelerated_Execution_Manager" "silent_install.sh" "$haxmPath -v" | Should -ReturnZeroExitCode diff --git a/images/macos/toolsets/toolset-10.13.json b/images/macos/toolsets/toolset-10.13.json index fdb14d084..6c12251b8 100644 --- a/images/macos/toolsets/toolset-10.13.json +++ b/images/macos/toolsets/toolset-10.13.json @@ -170,12 +170,8 @@ ] }, "android": { - "platform-list": [ - "android-30", "android-29", "android-28", "android-27", "android-26", "android-25", "android-24", "android-23", "android-22", "android-21", "android-20", "android-19", "android-18", "android-17", "android-16", "android-15" - ], - "build-tools": [ - "30.0.1", "30.0.0", "29.0.3", "29.0.2", "29.0.1", "29.0.0", "28.0.3", "28.0.2", "28.0.1", "28.0.0", "27.0.3", "27.0.2", "27.0.1", "27.0.0", "26.0.3", "26.0.2", "26.0.1", "26.0.0", "25.0.3", "25.0.2", "25.0.1", "25.0.0", "24.0.3", "24.0.2", "24.0.1", "24.0.0", "23.0.3", "23.0.2", "23.0.1", "23.0.0", "22.0.1", "21.1.2", "20.0.0", "19.1.0", "17.0.0" - ], + "platform_min_version": "15", + "build_tools_min_version": "17.0.0", "extra-list": [ "android;m2repository", "google;m2repository", "google;google_play_services", "intel;Hardware_Accelerated_Execution_Manager", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta2", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta3", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta4", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta5", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta1", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta2", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta3", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta4", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta5", "m2repository;com;android;support;constraint;constraint-layout;1.0.0", "m2repository;com;android;support;constraint;constraint-layout;1.0.1", "m2repository;com;android;support;constraint;constraint-layout;1.0.2" ], diff --git a/images/macos/toolsets/toolset-10.14.json b/images/macos/toolsets/toolset-10.14.json index 68e2f4c4a..2abe98036 100644 --- a/images/macos/toolsets/toolset-10.14.json +++ b/images/macos/toolsets/toolset-10.14.json @@ -191,12 +191,8 @@ ] }, "android": { - "platform-list": [ - "android-30", "android-29", "android-28", "android-27", "android-26", "android-25", "android-24", "android-23", "android-22", "android-21", "android-20", "android-19", "android-18", "android-17", "android-16", "android-15" - ], - "build-tools": [ - "30.0.2", "30.0.1", "30.0.0", "29.0.3", "29.0.2", "29.0.1", "29.0.0", "28.0.3", "28.0.2", "28.0.1", "28.0.0", "27.0.3", "27.0.2", "27.0.1", "27.0.0", "26.0.3", "26.0.2", "26.0.1", "26.0.0", "25.0.3", "25.0.2", "25.0.1", "25.0.0", "24.0.3", "24.0.2", "24.0.1", "24.0.0", "23.0.3", "23.0.2", "23.0.1", "23.0.0", "22.0.1", "21.1.2", "20.0.0", "19.1.0", "17.0.0" - ], + "platform_min_version": "15", + "build_tools_min_version": "17.0.0", "extra-list": [ "android;m2repository", "google;m2repository", "google;google_play_services", "intel;Hardware_Accelerated_Execution_Manager", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta2", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta3", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta4", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta5", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta1", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta2", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta3", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta4", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta5", "m2repository;com;android;support;constraint;constraint-layout;1.0.0", "m2repository;com;android;support;constraint;constraint-layout;1.0.1", "m2repository;com;android;support;constraint;constraint-layout;1.0.2" ], diff --git a/images/macos/toolsets/toolset-10.15.json b/images/macos/toolsets/toolset-10.15.json index 998d5965f..3e3833528 100644 --- a/images/macos/toolsets/toolset-10.15.json +++ b/images/macos/toolsets/toolset-10.15.json @@ -100,12 +100,8 @@ ] }, "android": { - "platform-list": [ - "android-30", "android-29", "android-28", "android-27", "android-26", "android-25", "android-24" - ], - "build-tools": [ - "30.0.2", "30.0.1", "30.0.0", "29.0.3", "29.0.2", "29.0.1", "29.0.0", "28.0.3", "28.0.2", "28.0.1", "28.0.0", "27.0.3", "27.0.2", "27.0.1", "27.0.0", "26.0.3", "26.0.2", "26.0.1", "26.0.0", "25.0.3", "25.0.2", "25.0.1", "25.0.0", "24.0.3", "24.0.2", "24.0.1", "24.0.0" - ], + "platform_min_version": "24", + "build_tools_min_version": "24.0.0", "extra-list": [ "android;m2repository", "google;m2repository", "google;google_play_services", "intel;Hardware_Accelerated_Execution_Manager", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta2", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta3", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta4", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta5", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1", "m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta1", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta2", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta3", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta4", "m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta5", "m2repository;com;android;support;constraint;constraint-layout;1.0.0", "m2repository;com;android;support;constraint;constraint-layout;1.0.1", "m2repository;com;android;support;constraint;constraint-layout;1.0.2" ], diff --git a/images/macos/toolsets/toolset-11.0.json b/images/macos/toolsets/toolset-11.0.json index 09dc69daf..5ff2280a2 100644 --- a/images/macos/toolsets/toolset-11.0.json +++ b/images/macos/toolsets/toolset-11.0.json @@ -44,12 +44,8 @@ ] }, "android": { - "platform-list": [ - "android-30", "android-29", "android-28", "android-27" - ], - "build-tools": [ - "30.0.2", "30.0.1", "30.0.0", "29.0.3", "29.0.2", "29.0.1", "29.0.0", "28.0.3", "28.0.2", "28.0.1", "28.0.0", "27.0.3", "27.0.2", "27.0.1", "27.0.0" - ], + "platform_min_version": "27", + "build_tools_min_version": "27.0.0", "extra-list": [ "android;m2repository", "google;m2repository", "google;google_play_services", "intel;Hardware_Accelerated_Execution_Manager" ], diff --git a/images/win/post-generation/Choco.ps1 b/images/win/post-generation/Choco.ps1 new file mode 100644 index 000000000..3f8e7c8df --- /dev/null +++ b/images/win/post-generation/Choco.ps1 @@ -0,0 +1,2 @@ +# Step to avoid initial delay for choco scripts +choco upgrade chocolatey \ No newline at end of file diff --git a/images/win/scripts/Installers/Install-DACFx.ps1 b/images/win/scripts/Installers/Install-DACFx.ps1 index 2160b1dcc..a59466d71 100644 --- a/images/win/scripts/Installers/Install-DACFx.ps1 +++ b/images/win/scripts/Installers/Install-DACFx.ps1 @@ -1,10 +1,10 @@ #################################################################################### ## File: Install-DACFx.ps1 -## Desc: Install SQL ServerĀ® Data-Tier Application Framework (DACFx) for Windows +## Desc: Install SQL ServerĀ® Data-Tier Application Framework (DacFx) for Windows #################################################################################### $InstallerName = "DacFramework.msi" -$InstallerUrl = "https://go.microsoft.com/fwlink/?linkid=2134206" +$InstallerUrl = "https://go.microsoft.com/fwlink/?linkid=2143544" Install-Binary -Url $InstallerUrl -Name $InstallerName diff --git a/images/win/scripts/Installers/Install-Miniconda.ps1 b/images/win/scripts/Installers/Install-Miniconda.ps1 index 0b2f59c88..71706b3bc 100644 --- a/images/win/scripts/Installers/Install-Miniconda.ps1 +++ b/images/win/scripts/Installers/Install-Miniconda.ps1 @@ -5,10 +5,8 @@ $CondaDestination = "C:\Miniconda" -# Lock to Miniconda 4.6 until we do the work to run `conda init` for the vsts user -# Then we can go back to installing the latest Miniconda -# $url = "https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86_64.exe" -$InstallerName = "Miniconda3-4.6.14-Windows-x86_64.exe" +# Install the latest Miniconda +$InstallerName = "Miniconda3-latest-Windows-x86_64.exe" $InstallerUrl = "https://repo.continuum.io/miniconda/${InstallerName}" $ArgumentList = ("/S", "/AddToPath=0", "/RegisterPython=0", "/D=$CondaDestination") diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 index ef7749e31..3a7a785e9 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 @@ -166,6 +166,7 @@ $markdown += New-MDNewLine $markdown += New-MDHeader "Database tools" -Level 3 $markdown += New-MDList -Style Unordered -Lines @( (Get-AzCosmosDBEmulatorVersion), + (Get-DacFxVersion), (Get-SQLPSVersion), (Get-MySQLVersion) ) diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Tools.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.Tools.psm1 index 6c4034871..690f36764 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Tools.psm1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Tools.psm1 @@ -254,3 +254,9 @@ function Get-AZDSVersion { $azdsVersion = $(azds --version) | Select-String "(\d+\.\d+\.\d+.\d+)" return "Azure Dev Spaces CLI $azdsVersion" } + +function Get-DacFxVersion { + cd "C:\Program Files\Microsoft SQL Server\150\DAC\bin\" + $dacfxversion = (./sqlpackage.exe /version) + return "DacFx $dacfxversion" +} \ No newline at end of file diff --git a/images/win/toolsets/toolset-2016.json b/images/win/toolsets/toolset-2016.json index 441b34c18..011366bf3 100644 --- a/images/win/toolsets/toolset-2016.json +++ b/images/win/toolsets/toolset-2016.json @@ -10,7 +10,8 @@ "3.5.*", "3.6.*", "3.7.*", - "3.8.*" + "3.8.*", + "3.9.*" ], "default": "3.7.*" }, @@ -24,7 +25,8 @@ "3.5.*", "3.6.*", "3.7.*", - "3.8.*" + "3.8.*", + "3.9.*" ] }, { diff --git a/images/win/toolsets/toolset-2019.json b/images/win/toolsets/toolset-2019.json index 5ca23b4ed..99e6d9e06 100644 --- a/images/win/toolsets/toolset-2019.json +++ b/images/win/toolsets/toolset-2019.json @@ -10,7 +10,8 @@ "3.5.*", "3.6.*", "3.7.*", - "3.8.*" + "3.8.*", + "3.9.*" ], "default": "3.7.*" }, @@ -24,7 +25,8 @@ "3.5.*", "3.6.*", "3.7.*", - "3.8.*" + "3.8.*", + "3.9.*" ] }, {