aboutsummaryrefslogtreecommitdiffstats
path: root/coin/provisioning
diff options
context:
space:
mode:
authorRyan Chu <ryan.chu@qt.io>2019-01-15 14:52:44 +0100
committerLiang Qi <liang.qi@qt.io>2019-02-02 12:23:15 +0000
commit177df80f09f3a84af7d86390ae7160a64fad8b4c (patch)
treeb8b895ce254611a926d5e9dd70392e9ccbc2e369 /coin/provisioning
parentab3e34827a69d936aa02757033b6a00be5003493 (diff)
Docker Provisioning: Install docker test servers on Windows 10 (x86_64)
Build and cache docker images to VirtualBox virtual machine. 1. Download and install the docker tool kits and Apple Bonjour 2. Deploy boot2docker image into VirtualBox via docker-machine commands 3. Use Git Bash to run the shared provisioning scripts 4. Print CPU features to verify that CI has enabled VT-X/AMD-v support 5. Disable Hyper-V from Windows 10 Pro/Enterprise editions Change-Id: I5520e4a28376aba14f880c077bd7b083be971f0a Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'coin/provisioning')
-rw-r--r--coin/provisioning/common/shared/testserver/.gitattributes1
-rwxr-xr-xcoin/provisioning/common/shared/testserver/docker_machine.sh4
-rwxr-xr-xcoin/provisioning/common/shared/testserver/docker_testserver.sh10
-rw-r--r--coin/provisioning/common/windows/docker.ps185
-rw-r--r--coin/provisioning/qtci-windows-10-x86_64/95-docker.ps16
5 files changed, 101 insertions, 5 deletions
diff --git a/coin/provisioning/common/shared/testserver/.gitattributes b/coin/provisioning/common/shared/testserver/.gitattributes
new file mode 100644
index 00000000..fcadb2cf
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/.gitattributes
@@ -0,0 +1 @@
+* text eol=lf
diff --git a/coin/provisioning/common/shared/testserver/docker_machine.sh b/coin/provisioning/common/shared/testserver/docker_machine.sh
index 601056a4..9c69faa9 100755
--- a/coin/provisioning/common/shared/testserver/docker_machine.sh
+++ b/coin/provisioning/common/shared/testserver/docker_machine.sh
@@ -2,7 +2,7 @@
#############################################################################
##
-## Copyright (C) 2018 The Qt Company Ltd.
+## 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.
@@ -40,7 +40,7 @@ TestMachine='qt-test-server'
# Deploy docker virtual machine (Boot2Docker) into VirtualBox only if it doesn't exist
if [ -z $(docker-machine ls -q --filter "name=$TestMachine") ]
then
- docker-machine create -d virtualbox $TestMachine
+ docker-machine create $@ $TestMachine
docker-machine ip $TestMachine
fi
diff --git a/coin/provisioning/common/shared/testserver/docker_testserver.sh b/coin/provisioning/common/shared/testserver/docker_testserver.sh
index c40edf17..83baa488 100755
--- a/coin/provisioning/common/shared/testserver/docker_testserver.sh
+++ b/coin/provisioning/common/shared/testserver/docker_testserver.sh
@@ -35,14 +35,18 @@
set -ex
-case ${BASH_SOURCE[0]} in
- */*) SERVER_PATH="${BASH_SOURCE[0]%/*}" ;;
+[ -x "$(command -v realpath)" ] && FILE=$(realpath ${BASH_SOURCE[0]}) || FILE=${BASH_SOURCE[0]}
+case $FILE in
+ */*) SERVER_PATH="${FILE%/*}" ;;
*) SERVER_PATH="." ;;
esac
# Create docker virtual machine (Boot2docker)
case $1 in
- VMX) source "$SERVER_PATH/docker_machine.sh" ;;
+ VMX) source "$SERVER_PATH/docker_machine.sh" "-d virtualbox" ;;
+ Hyper-V)
+ # The Hyper-v has been enabled in Windows 10. Disable checking the hardware virtualization.
+ source "$SERVER_PATH/docker_machine.sh" "-d virtualbox --virtualbox-no-vtx-check" ;;
*) ;;
esac
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/qtci-windows-10-x86_64/95-docker.ps1 b/coin/provisioning/qtci-windows-10-x86_64/95-docker.ps1
new file mode 100644
index 00000000..df735855
--- /dev/null
+++ b/coin/provisioning/qtci-windows-10-x86_64/95-docker.ps1
@@ -0,0 +1,6 @@
+# Disable Hyper-V from Windows 10 Pro/Enterprise
+# Because VirtualBox is a type 2 hypervisor, it can't run if Hyper-V virtual machines are in use.
+# Otherwise, docker-machine will complain about "VT-x is not available (VERR_VMX_NO_VMX)".
+Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -NoRestart
+
+. "$PSScriptRoot\..\common\windows\docker.ps1"