diff options
Diffstat (limited to 'coin/provisioning/common/windows')
-rw-r--r-- | coin/provisioning/common/windows/disable-windows-updates.ps1 | 4 | ||||
-rw-r--r-- | coin/provisioning/common/windows/docker.ps1 | 85 | ||||
-rw-r--r-- | coin/provisioning/common/windows/helpers.ps1 | 32 |
3 files changed, 120 insertions, 1 deletions
diff --git a/coin/provisioning/common/windows/disable-windows-updates.ps1 b/coin/provisioning/common/windows/disable-windows-updates.ps1 index 87414f03..15644cfe 100644 --- a/coin/provisioning/common/windows/disable-windows-updates.ps1 +++ b/coin/provisioning/common/windows/disable-windows-updates.ps1 @@ -33,6 +33,8 @@ # This script disables the automatic Windows updates +. "$PSScriptRoot\helpers.ps1" + $service = get-service wuauserv if (-not $service) { Write-Host "Windows Update service not found." @@ -43,7 +45,7 @@ if ($service.Status -eq "Stopped") { Write-Host "Windows Update service already stopped." } else { Write-Host "Stopping Windows Update service." - Stop-Service -Name "wuauserv" -Force + Retry {Stop-Service -Name "wuauserv" -Force} 20 5 } $startup = Get-WmiObject Win32_Service | Where-Object {$_.Name -eq "wuauserv"} | Select -ExpandProperty "StartMode" diff --git a/coin/provisioning/common/windows/docker.ps1 b/coin/provisioning/common/windows/docker.ps1 new file mode 100644 index 00000000..6f53eccd --- /dev/null +++ b/coin/provisioning/common/windows/docker.ps1 @@ -0,0 +1,85 @@ +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the provisioning scripts of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL21$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see http://www.qt.io/terms-conditions. For further +## information use the contact form at http://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 2.1 or version 3 as published by the Free +## Software Foundation and appearing in the file LICENSE.LGPLv21 and +## LICENSE.LGPLv3 included in the packaging of this file. Please review the +## following information to ensure the GNU Lesser General Public License +## requirements will be met: https://www.gnu.org/licenses/lgpl.html and +## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +## +## As a special exception, The Qt Company gives you certain additional +## rights. These rights are described in The Qt Company LGPL Exception +## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +## +## $QT_END_LICENSE$ +## +############################################################################# + +. "$PSScriptRoot\helpers.ps1" + +# This script installs Docker tool kits and Apple Bonjour on Windows. + +function DownloadAndInstall +{ + Param ( + [string]$externalUrl, + [string]$internalUrl, + [string]$package, + [string]$sha1, + [string]$parameters + ) + + Write-Host "Fetching $package from URL..." + Download $externalUrl $internalUrl $package + Verify-Checksum $package $sha1 + + Write-Host "Installing $package..." + Run-Executable $package $parameters + + Write-Host "Remove $package..." + Remove-Item -Path $package +} + +# Install Docker Toolbox +$package = Get-DownloadLocation "DockerToolbox.exe" +$externalUrl = "https://download.docker.com/win/stable/DockerToolbox.exe" +$internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/DockerToolbox.exe" +$sha1 = "62325c426ff321d9ebfb89664d65cf9ffaef2985" +DownloadAndInstall $externalUrl $internalUrl $package $sha1 "/SP- /SILENT" +Add-Path 'C:\Program Files\Docker Toolbox' +docker --version +docker-compose --version + +# Install Apple Bonjour +$package = Get-DownloadLocation "BonjourPSSetup.exe" +$externalUrl = "http://support.apple.com/downloads/DL999/en_US/BonjourPSSetup.exe" +$internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/BonjourPSSetup.exe" +$sha1 = "847f39e0ea80d2a4d902fe59657e18f5bc32a8cb" +DownloadAndInstall $externalUrl $internalUrl $package $sha1 "/qr" + +# Nested virtualization - Print CPU features to verify that CI has enabled VT-X/AMD-v support +$testserver = "$PSScriptRoot\..\shared\testserver\docker_testserver.sh" +$sysInfoStr = systeminfo +if ($sysInfoStr -like "*A hypervisor has been detected*") { + & 'C:\Program Files\Git\bin\bash.exe' --login $testserver Hyper-V +} elseif ($sysInfoStr -like "*Virtualization Enabled In Firmware: Yes*") { + & 'C:\Program Files\Git\bin\bash.exe' --login $testserver VMX +} else { + Write-Error "VMX not found error! Please make sure Coin has enabled VT-X/AMD-v." +} diff --git a/coin/provisioning/common/windows/helpers.ps1 b/coin/provisioning/common/windows/helpers.ps1 index 76ad4867..9cd8567e 100644 --- a/coin/provisioning/common/windows/helpers.ps1 +++ b/coin/provisioning/common/windows/helpers.ps1 @@ -159,3 +159,35 @@ function IsProxyEnabled { function Get-Proxy { return (Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').proxyServer } + +function Retry{ + <# + usage: + Retry{CODE} + Retry{CODE} <num of retries> <delay_s> + #delay is in seconds + #> + Param( + [Parameter(mandatory=$true)] + [scriptblock]$command, + [int][ValidateRange(1, 20)]$retry = 5, + [int][ValidateRange(1, 60)]$delay_s = 5 + ) + $success=$false + $retry_count=0 + do{ + try { + Invoke-Command -ScriptBlock $command + $success=$true + } + catch { + $retry_count++ + Write-Host "Error: $_, try: $retry_count, retrying in $delay_s seconds" + Start-Sleep -Seconds $delay_s + } + } until ($success -or $retry+1 -le $retry_count) + + if (-not $success) { + Throw("Failed to run command successfully in $retry_count tries") + } +} |