diff options
Diffstat (limited to 'coin/provisioning/common')
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 ( |