aboutsummaryrefslogtreecommitdiffstats
path: root/coin/provisioning/common
diff options
context:
space:
mode:
Diffstat (limited to 'coin/provisioning/common')
-rwxr-xr-xcoin/provisioning/common/linux/android_linux.sh4
-rwxr-xr-xcoin/provisioning/common/linux/docker.sh7
-rw-r--r--coin/provisioning/common/shared/testserver/.gitattributes1
-rw-r--r--coin/provisioning/common/shared/testserver/apache2_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/californium/Dockerfile15
-rw-r--r--coin/provisioning/common/shared/testserver/cyrus/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile4
-rwxr-xr-xcoin/provisioning/common/shared/testserver/docker_images.sh (renamed from coin/provisioning/common/linux/docker_testserver.sh)26
-rwxr-xr-xcoin/provisioning/common/shared/testserver/docker_machine.sh7
-rwxr-xr-x[-rw-r--r--]coin/provisioning/common/shared/testserver/docker_testserver.sh (renamed from coin/provisioning/common/shared/testserver/testserver_util.sh)30
-rw-r--r--coin/provisioning/common/shared/testserver/echo/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/freecoap/Dockerfile20
-rw-r--r--coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/iptables/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/settings.sh5
-rw-r--r--coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/windows/android-openssl.ps12
-rw-r--r--coin/provisioning/common/windows/android.ps14
-rw-r--r--coin/provisioning/common/windows/disable-windows-updates.ps14
-rw-r--r--coin/provisioning/common/windows/helpers.ps132
24 files changed, 171 insertions, 30 deletions
diff --git a/coin/provisioning/common/linux/android_linux.sh b/coin/provisioning/common/linux/android_linux.sh
index b83c1c6e..44bd2281 100755
--- a/coin/provisioning/common/linux/android_linux.sh
+++ b/coin/provisioning/common/linux/android_linux.sh
@@ -51,13 +51,13 @@ basePath="http://ci-files01-hki.intra.qt.io/input/android"
toolsVersion="r26.1.1"
toolsFile="sdk-tools-linux-4333796.zip"
-ndkVersion="r19c"
+ndkVersion="r20"
ndkFile="android-ndk-$ndkVersion-linux-x86_64.zip"
sdkBuildToolsVersion="28.0.3"
sdkApiLevel="android-28"
toolsSha1="8c7c28554a32318461802c1291d76fccfafde054"
-ndkSha1="fd94d0be6017c6acbd193eb95e09cf4b6f61b834"
+ndkSha1="8665fc84a1b1f0d6ab3b5fdd1e30200cc7b9adff"
toolsTargetFile="/tmp/$toolsFile"
toolsSourceFile="$basePath/$toolsFile"
diff --git a/coin/provisioning/common/linux/docker.sh b/coin/provisioning/common/linux/docker.sh
index 1d9e8419..9be84e38 100755
--- a/coin/provisioning/common/linux/docker.sh
+++ b/coin/provisioning/common/linux/docker.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.
@@ -42,14 +42,15 @@ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubun
sudo apt-get update
sudo apt-get install docker-ce -y
sudo usermod -a -G docker $USER
-sudo docker info
+sudo docker --version
# Download and install the docker-compose extension.
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
+sudo docker-compose --version
# Install Avahi to discover Docker containers in the test network
sudo apt-get install avahi-daemon -y
# Start testserver provisioning
-source "${BASH_SOURCE%/*}/docker_testserver.sh"
+sudo "$(readlink -f $(dirname ${BASH_SOURCE[0]}))/../shared/testserver/docker_testserver.sh"
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/apache2_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/apache2_18.04/Dockerfile
new file mode 100644
index 00000000..dff9fe43
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/apache2_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="apache2 libcgi-session-perl avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 80 443
diff --git a/coin/provisioning/common/shared/testserver/californium/Dockerfile b/coin/provisioning/common/shared/testserver/californium/Dockerfile
new file mode 100644
index 00000000..90722510
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/californium/Dockerfile
@@ -0,0 +1,15 @@
+FROM ubuntu:18.04
+
+RUN apt-get update && apt-get -y install git maven default-jdk avahi-daemon
+
+RUN mkdir -p /root/src/
+
+# Get californium-based CoAP test server
+WORKDIR /root/src
+RUN git clone https://github.com/selart/californium.git
+WORKDIR /root/src/californium
+RUN mvn clean install -q -DskipTests
+
+WORKDIR /
+
+EXPOSE 5683/udp 5684/udp
diff --git a/coin/provisioning/common/shared/testserver/cyrus/Dockerfile b/coin/provisioning/common/shared/testserver/cyrus/Dockerfile
new file mode 100644
index 00000000..55486175
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/cyrus/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:16.04
+ARG packages="cyrus-imapd avahi-daemon"
+RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y $packages && dpkg -l $packages
+EXPOSE 143 993
diff --git a/coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile
new file mode 100644
index 00000000..2e525ec6
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="cyrus-imapd avahi-daemon"
+RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y $packages && dpkg -l $packages
+EXPOSE 143 993
diff --git a/coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile
new file mode 100644
index 00000000..f48794af
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="dante-server avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 1080-1081
diff --git a/coin/provisioning/common/linux/docker_testserver.sh b/coin/provisioning/common/shared/testserver/docker_images.sh
index 2d5d9611..e98183d8 100755
--- a/coin/provisioning/common/linux/docker_testserver.sh
+++ b/coin/provisioning/common/shared/testserver/docker_images.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.
@@ -35,14 +35,21 @@
set -ex
-case ${BASH_SOURCE[0]} in
- */linux/*) SERVER_PATH="${BASH_SOURCE[0]%/linux/*}/shared/testserver" ;;
- */*) SERVER_PATH="${BASH_SOURCE[0]%/*}/../shared/testserver" ;;
- *) SERVER_PATH="../shared/testserver" ;;
+[ -x "$(command -v realpath)" ] && FILE=$(realpath ${BASH_SOURCE[0]}) || FILE=${BASH_SOURCE[0]}
+case $FILE in
+ */*) SERVER_PATH="${FILE%/*}" ;;
+ *) SERVER_PATH="." ;;
esac
-# testserver shared scripts
-source "$SERVER_PATH/testserver_util.sh"
+# Sort files by their SHA-1, and then return the accumulated result
+sha1tree () {
+ # For example, macOS doesn't install sha1sum by default. In such case, it uses shasum instead.
+ [ -x "$(command -v sha1sum)" ] || SHASUM=shasum
+
+ find "$@" -type f -print0 | \
+ xargs -0 ${SHASUM-sha1sum} | cut -d ' ' -f 1 | \
+ sort | ${SHASUM-sha1sum} | cut -d ' ' -f 1
+}
# Using SHA-1 of each server context as the tag of docker images. A tag labels a
# specific image version. It is used by docker compose file (docker-compose.yml)
@@ -55,8 +62,7 @@ source "$SERVER_PATH/settings.sh"
for server in $testserver
do
context="$SERVER_PATH/$server"
- # Sort files by their SHA-1 and use the accumulated result as the TAG
- sudo docker build -t qt-test-server-$server:$(sha1tree $context) $context
+ docker build -t qt-test-server-$server:$(sha1tree $context) $context
done
-sudo docker images
+docker images
diff --git a/coin/provisioning/common/shared/testserver/docker_machine.sh b/coin/provisioning/common/shared/testserver/docker_machine.sh
index 601056a4..8d791074 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,8 +40,11 @@ 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
+else
+ # Otherwise, start the docker machine and update with new TLS certificates.
+ docker-machine start $TestMachine && docker-machine regenerate-certs -f $TestMachine
fi
# Switch the docker engine to $TestMachine
diff --git a/coin/provisioning/common/shared/testserver/testserver_util.sh b/coin/provisioning/common/shared/testserver/docker_testserver.sh
index c42fb5e0..3a7c87e8 100644..100755
--- a/coin/provisioning/common/shared/testserver/testserver_util.sh
+++ b/coin/provisioning/common/shared/testserver/docker_testserver.sh
@@ -1,6 +1,8 @@
+#!/usr/bin/env bash
+
#############################################################################
##
-## 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.
@@ -33,9 +35,23 @@
set -ex
-# Sort files by their SHA-1, and then return the accumulated result
-sha1tree () {
- find "$@" -type f -print0 | \
- xargs -0 shasum | cut -d ' ' -f 1 | \
- sort | shasum | cut -d ' ' -f 1
-}
+[ -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" "-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
+
+# Display system-wide information of docker-engine
+docker info
+
+# Create images
+$SERVER_PATH/docker_images.sh
diff --git a/coin/provisioning/common/shared/testserver/echo/Dockerfile b/coin/provisioning/common/shared/testserver/echo/Dockerfile
new file mode 100644
index 00000000..653ca714
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/echo/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:16.04
+ARG packages="xinetd avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 7 7/UDP 13
diff --git a/coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile
new file mode 100644
index 00000000..37f488cb
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="xinetd avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 7 7/UDP 13
diff --git a/coin/provisioning/common/shared/testserver/freecoap/Dockerfile b/coin/provisioning/common/shared/testserver/freecoap/Dockerfile
new file mode 100644
index 00000000..2c665bd5
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/freecoap/Dockerfile
@@ -0,0 +1,20 @@
+FROM ubuntu:18.04
+
+RUN apt-get update && apt-get -y install git avahi-daemon autoconf automake libtool make libgnutls28-dev
+
+RUN mkdir -p /root/src/
+
+# Get FreeCoAP test server
+WORKDIR /root/src
+RUN git clone https://github.com/keith-cullen/FreeCoAP.git
+WORKDIR /root/src/FreeCoAP
+RUN autoreconf --install
+RUN ./configure
+RUN make
+RUN make install
+WORKDIR /root/src/FreeCoAP/sample/time_server
+RUN make
+
+WORKDIR /
+
+EXPOSE 5685/udp
diff --git a/coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile
new file mode 100644
index 00000000..0e7146ba
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="ftp-proxy avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 2121
diff --git a/coin/provisioning/common/shared/testserver/iptables/Dockerfile b/coin/provisioning/common/shared/testserver/iptables/Dockerfile
new file mode 100644
index 00000000..cbee61d4
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/iptables/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:16.04
+ARG packages="iptables avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 1357
diff --git a/coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile
new file mode 100644
index 00000000..5865e9c8
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="iptables avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 1357
diff --git a/coin/provisioning/common/shared/testserver/settings.sh b/coin/provisioning/common/shared/testserver/settings.sh
index 041661f2..27832773 100644
--- a/coin/provisioning/common/shared/testserver/settings.sh
+++ b/coin/provisioning/common/shared/testserver/settings.sh
@@ -1,6 +1,6 @@
#############################################################################
##
-## 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.
@@ -34,4 +34,5 @@
set -ex
# A list of test servers to be provisioned
-testserver='apache2 squid vsftpd ftp-proxy danted'
+testserver='apache2 squid vsftpd ftp-proxy danted echo cyrus iptables californium freecoap'
+testserver="$testserver apache2_18.04 squid_18.04 vsftpd_18.04 ftp-proxy_18.04 danted_18.04 echo_18.04 cyrus_18.04 iptables_18.04"
diff --git a/coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile
new file mode 100644
index 00000000..208feec7
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="squid avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 3128-3130
diff --git a/coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile
new file mode 100644
index 00000000..843472fd
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="vsftpd avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 20-21
diff --git a/coin/provisioning/common/windows/android-openssl.ps1 b/coin/provisioning/common/windows/android-openssl.ps1
index e4306584..d1877b64 100644
--- a/coin/provisioning/common/windows/android-openssl.ps1
+++ b/coin/provisioning/common/windows/android-openssl.ps1
@@ -51,7 +51,7 @@ $sha1 = "056057782325134b76d1931c48f2c7e6595d7ef4"
$destination = "C:\Utils\openssl-android-master"
# msys unix style paths
-$ndkPath = "/c/Utils/Android/android-ndk-r19c"
+$ndkPath = "/c/Utils/Android/android-ndk-r20"
$openssl_path = "/c/Utils/openssl-android-master"
$cc_path = "$ndkPath/toolchains/llvm/prebuilt/windows-x86_64/bin"
Download https://www.openssl.org/source/openssl-$version.tar.gz \\ci-files01-hki.intra.qt.io\provisioning\openssl\openssl-$version.tar.gz $zip
diff --git a/coin/provisioning/common/windows/android.ps1 b/coin/provisioning/common/windows/android.ps1
index def09116..537e14a2 100644
--- a/coin/provisioning/common/windows/android.ps1
+++ b/coin/provisioning/common/windows/android.ps1
@@ -40,10 +40,10 @@
# That's why we need to use Andoid-21 API version in Qt 5.9.
# NDK
-$ndkVersion = "r19c"
+$ndkVersion = "r20"
$ndkCachedUrl = "\\ci-files01-hki.intra.qt.io\provisioning\android\android-ndk-$ndkVersion-windows-x86_64.zip"
$ndkOfficialUrl = "https://dl.google.com/android/repository/android-ndk-$ndkVersion-windows-x86_64.zip"
-$ndkChecksum = "c4cd8c0b6e7618ca0a871a5f24102e40c239f6a3"
+$ndkChecksum = "36e1dc77fad08ad2498fb94b13ad8caf26bbd9df"
$ndkFolder = "c:\Utils\Android\android-ndk-$ndkVersion"
$ndkZip = "c:\Windows\Temp\android_ndk_$ndkVersion.zip"
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/helpers.ps1 b/coin/provisioning/common/windows/helpers.ps1
index 3ccb42ac..8599791d 100644
--- a/coin/provisioning/common/windows/helpers.ps1
+++ b/coin/provisioning/common/windows/helpers.ps1
@@ -204,6 +204,38 @@ 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")
+ }
+}
+
function Remove {
Param (