summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeikki Halmet <heikki.halmet@qt.io>2017-04-24 12:31:38 +0300
committerLiang Qi <liang.qi@qt.io>2018-01-26 13:12:51 +0000
commit462a2aae2b8ba298d893ba52d16c1b13435f04ff (patch)
treeafb7bd28d2c6167d4dfae3baddea58a6cf472b3e
parentdc5f851e787821733bc67c4a0328bc3db17be775 (diff)
Provisioning: Add Squish provisioning for Release Test Automation
Squish is required by RTA for testing. Task-number: QTQAINFRA-1523 Change-Id: I0c3653565f19cc9b798a0b63325c47b017cf5537 Reviewed-by: Joni Jäntti <joni.jantti@qt.io> Reviewed-by: Matti Paaso <matti.paaso@qt.io>
-rwxr-xr-xcoin/provisioning/common/unix/squishInstall.sh211
-rw-r--r--coin/provisioning/common/windows/helpers.ps116
-rw-r--r--coin/provisioning/common/windows/squishInstall.ps1163
-rwxr-xr-xcoin/provisioning/qtci-linux-RHEL-7.4-x86_64/90-squish.sh4
-rwxr-xr-xcoin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/90-squish.sh4
-rwxr-xr-xcoin/provisioning/qtci-linux-openSUSE-42.3-x86_64/90-squish.sh4
-rwxr-xr-xcoin/provisioning/qtci-macos-10.12-x86_64/90-squish.sh4
-rwxr-xr-xcoin/provisioning/qtci-osx-10.10-x86_64/90-squish.sh4
-rwxr-xr-xcoin/provisioning/qtci-osx-10.11-x86_64/90-squish.sh4
-rw-r--r--coin/provisioning/qtci-windows-10-x86/90-squish.ps11
-rw-r--r--coin/provisioning/qtci-windows-10-x86_64/90-squish.ps11
-rw-r--r--coin/provisioning/qtci-windows-7-x86/90-squish.ps11
-rw-r--r--coin/provisioning/qtci-windows-8.1-x86/90-squish.ps11
-rw-r--r--coin/provisioning/qtci-windows-8.1-x86_64/90-squish.ps11
14 files changed, 419 insertions, 0 deletions
diff --git a/coin/provisioning/common/unix/squishInstall.sh b/coin/provisioning/common/unix/squishInstall.sh
new file mode 100755
index 00000000..e2553fcf
--- /dev/null
+++ b/coin/provisioning/common/unix/squishInstall.sh
@@ -0,0 +1,211 @@
+#!/usr/bin/env bash
+
+#############################################################################
+##
+## Copyright (C) 2017 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$
+##
+#############################################################################
+
+source "${BASH_SOURCE%/*}/try_catch.sh"
+
+set -ex
+
+# This script will install squish package for Linux and Mac.
+# Squish is need by Release Test Automation (RTA)
+
+version="6.3.0"
+# Branch version without dot
+qtBranch="59x"
+squishFolder="/opt/squish"
+squishUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/coin/$qtBranch/"
+squishFile="squish-$version-qt$qtBranch-linux64.run"
+if uname -a |grep -q Darwin; then
+ squishFile="squish-$version-qt$qtBranch-macx86_64.dmg"
+fi
+
+squishLicenseUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/coin/"
+squishLicenseFile=".squish-3-license.tar.gz"
+
+# These checks can be removed when Vanilla OS for all linux and Mac are in
+if [ -d "$squishFolder" ]; then
+ echo "Move old squish to /tmp"
+ sudo mv "$squishFolder" "/tmp/squish_$(date)"
+fi
+
+if [ -f "/etc/profile.d/squish_env.sh" ]; then
+ echo "Remove /etc/profile.d/squish_env.sh"
+ sudo rm -f "/etc/profile.d/squish_env.sh"
+ export SQUISH_LICENSEKEY_DIR=$HOME
+fi
+
+ExceptionMount=100
+ExceptionCreateFolder=101
+ExceptionUncompress=102
+ExceptionUnknownFormat=103
+ExceptionCopy=104
+ExceptionUmount=105
+ExceptionHdiutilAttach=106
+ExceptionInstallSquish=107
+ExceptionChangeOwnership=108
+
+function MountAndInstall {
+
+ url=$1
+ targetDirectory=$2
+ targetFile=$3
+
+ # Check which platform
+ if uname -a |grep -q Darwin; then
+ usersGroup="staff"
+ mountFolder="/Volumes"
+ squishLicenseDir="/Users/qt"
+ elif uname -a |grep -q "el6\|el7"; then
+ usersGroup="qt"
+ mountFolder="/tmp"
+ squishLicenseDir="/root"
+ elif uname -a |grep -q "Ubuntu"; then
+ usersGroup="users"
+ mountFolder="/tmp"
+ squishLicenseDir="/home/qt"
+ else
+ usersGroup="users"
+ mountFolder="/tmp"
+ squishLicenseDir="/root"
+ fi
+
+ targetFileMount="$mountFolder"/"$targetFile"
+
+ try
+ (
+ echo "Mounting $url to $mountFolder"
+ sudo mount "$url" $mountFolder || throw $ExceptionMount
+ echo "Create $targetDirectory if needed"
+ if [ ! -d "/opt" ]; then
+ sudo mkdir "/opt" || throw $ExceptionCreateFolder
+ fi
+ if [ ! -d "$targetDirectory" ]; then
+ sudo mkdir "$targetDirectory" || throw $ExceptionCreateFolder
+ fi
+ echo "Uncompress $targetFile"
+ if [[ $targetFile == *.tar.gz ]]; then
+ if [[ $targetFile == .squish-3-license.* ]]; then
+ target="$squishLicenseDir"
+ # Squish license need to be exists also in users home directory, because squish check it before it starts running tests
+ sudo tar -xzf "$targetFileMount" --directory "$HOME" || throw $ExceptionUncompress
+ else
+ target="$targetDirectory"
+ fi
+ sudo tar -xzf "$targetFileMount" --directory "$target" || throw $ExceptionUncompress
+ echo "Unmounting $mountFolder"
+ sudo umount $mountFolder || throw $ExceptionUmount
+ elif [[ $targetFile == *.dmg ]]; then
+ echo "'dmg-file', no need to uncompress"
+ sudo cp $targetFileMount /tmp || throw $ExceptionCopy
+ sudo umount $mountFolder || throw $ExceptionUmount
+ sudo hdiutil attach "/tmp/$targetFile" || throw $ExceptionHdiutilAttach
+ sudo /Volumes/froglogic\ Squish/Install\ Squish.app/Contents/MacOS/Squish unattended=1 targetdir="$targetDirectory/package" qtpath="$targetDirectory" || throw $ExceptionInstallSquish
+ sudo hdiutil unmount /Volumes/froglogic\ Squish/
+ elif [[ $targetFile == *.run ]]; then
+ echo "'run-file', no need to uncompress"
+ sudo cp $targetFileMount $targetDirectory || throw $ExceptionCopy
+ sudo umount $mountFolder || throw $ExceptionUmount
+ sudo $targetDirectory/$targetFile unattended=1 targetdir="$targetDirectory/package" qtpath="$targetDirectory" > /dev/null 2>&1 || throw $ExceptionInstallSquish
+ sudo rm -fr "$targetDirectory/$targetFile"
+ if uname -a |grep -q "Ubuntu"; then
+ sudo mkdir /usr/lib/tcl8.6 || throw $ExceptionCreateFolder
+ sudo cp "$targetDirectory/package/tcl/lib/tcl8.6/init.tcl" /usr/lib/tcl8.6/ || throw $ExceptionCopy
+ fi
+ else
+ throw $ExceptionUnknownFormat
+ fi
+
+ echo "Changing ownerships"
+ sudo chown -R qt:$usersGroup "$targetDirectory" || throw $ExceptionChangeOwnership
+ sudo chown qt:$usersGroup "$HOME/.squish-3-license"
+
+ )
+
+ catch || {
+ case $ex_code in
+ $ExceptionMount)
+ echo "Failed to mount $url to $mountFolder."
+ exit 1;
+ ;;
+ $ExceptionCreateFolder)
+ echo "Failed to create folder"
+ exit 1;
+ ;;
+ $ExceptionUncompress)
+ echo "Failed extracting compressed file."
+ exit 1;
+ ;;
+ $ExceptionUnknownFormat)
+ echo "Unknown file format."
+ exit 1;
+ ;;
+ $ExceptionCopy)
+ echo "Failed to copy"
+ exit 1;
+ ;;
+ $ExceptionUmount)
+ echo "Failed to unmount $mountFolder."
+ exit 1;
+ ;;
+ $ExceptionHdiutilAttach)
+ echo "Failed to hdituli attach $mountFolder/$targetFile."
+ exit 1;
+ ;;
+ $ExceptionInstallSquish)
+ echo "Failed to install squish"
+ exit 1;
+ ;;
+ $ExceptionChangeOwnership)
+ echo "Failed to change ownership of $targetDirectory."
+ exit 1;
+ ;;
+ esac
+ }
+}
+
+echo "Set commands for environment variables in .bashrc"
+
+if uname -a |grep -q "Ubuntu"; then
+ echo "export SQUISH_PATH=$squishFolder/package" >> ~/.profile
+ echo "export PATH=\$PATH:$quishFolder/squish-$version/bin" >> ~/.profile
+else
+ echo "export SQUISH_PATH=$squishFolder/package" >> ~/.bashrc
+ echo "export PATH=\$PATH:$quishFolder/squish-$version/bin" >> ~/.bashrc
+fi
+
+echo "Installing squish license to home directory.."
+MountAndInstall "$squishLicenseUrl" "$squishFolder" "$squishLicenseFile"
+
+echo "Installing squish $version.."
+MountAndInstall "$squishUrl" "$squishFolder" "$squishFile"
diff --git a/coin/provisioning/common/windows/helpers.ps1 b/coin/provisioning/common/windows/helpers.ps1
index f6a9fd90..4248d0ed 100644
--- a/coin/provisioning/common/windows/helpers.ps1
+++ b/coin/provisioning/common/windows/helpers.ps1
@@ -127,3 +127,19 @@ function is64bitWinHost
return 0
}
}
+
+Function Execute-Command
+{
+ Param (
+ [string]$command
+ )
+ Try {
+ echo "Executing command '$command'..."
+ $process = Start-Process -FilePath "cmd" -ArgumentList "/c $command" -PassThru -Wait -WindowStyle Hidden
+ if ($process.ExitCode) {throw "Error running command: '$command'"}
+ }
+ Catch {
+ $_.Exception.Message
+ exit 1
+ }
+}
diff --git a/coin/provisioning/common/windows/squishInstall.ps1 b/coin/provisioning/common/windows/squishInstall.ps1
new file mode 100644
index 00000000..7641c9fe
--- /dev/null
+++ b/coin/provisioning/common/windows/squishInstall.ps1
@@ -0,0 +1,163 @@
+#############################################################################
+##
+## Copyright (C) 2017 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 will install squish package for Windows.
+# Squish is need by Release Test Automation (RTA)
+
+$version = "6.3.0"
+# Qt branch without dot (*.*)
+$qtBranch = "59x"
+$targetDir = "C:\Utils\squish"
+$squishUrl = "\\ci-files01-hki.intra.qt.io\provisioning\squish\coin"
+$squishBranchUrl = "$squishUrl\$qtBranch"
+
+# Squish license
+$licensePackage = ".squish-3-license"
+
+$OSVersion = (get-itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName
+
+# This can be removed when using vanilla os
+if((Test-Path -Path "$targetDir" )){
+ try {
+ echo "Renaming old Squish"
+ echo "Rename-Item -ErrorAction 'Stop' $targetDir $targetDir_deleted"
+ Rename-Item -ErrorAction 'Stop' "$targetDir" squish_deleted
+ } catch {}
+}
+
+Function DownloadAndInstallSquish {
+
+ Param (
+ [string]$version,
+ [string]$squishBranchUrl,
+ [string]$qtBranch,
+ [string]$bit,
+ [string]$targetDir,
+ [string]$squishPackage
+ )
+
+ $SquishUrl = $squishBranchUrl + "\squish-" + $version + "-qt" + $qtBranch + "-" + $bit + "-" + $squishPackage + ".exe"
+ $SquishInstaller = "$targetDir\$squishPackage.exe"
+ $SquishParameters = "unattended=1 targetdir=$targetDir\$squishPackage"
+ $Command = "$SquishInstaller $SquishParameters"
+
+ echo "Fetching from URL ..."
+ Copy-Item "$SquishUrl" "$SquishInstaller"
+ echo "Installing Squish"
+ Execute-Command $Command
+ remove-item $SquishInstaller
+}
+
+Function DownloadSquishLicence {
+
+ Param (
+ [string]$licensePackage,
+ [string]$squishUrl,
+ [string]$targetDir
+ )
+
+ # This can be removed when using vanilla os
+ if ($Env:SQUISH_LICENSEKEY_DIR)
+ {
+ echo "Removing SQUISH_LICENSEKEY_DIR env variable"
+ Remove-Item Env:\SQUISH_LICENSEKEY_DIR
+ }
+
+ echo "Installing Squish license to home directory"
+ Copy-Item $squishUrl\$licensePackage ~\$licensePackage
+}
+
+echo "Creating $targetDir"
+New-Item -ErrorAction Ignore -ItemType directory -Path "$targetDir"
+
+DownloadSquishLicence $licensePackage $squishUrl $targetDir
+
+if(($OSVersion -eq "Windows 10 Enterprise") -or ($OSVersion -eq "Windows 8.1 Enterprise"))
+{
+ # Squish for Visual Studio 2015
+ $squishPackage = "msvc14"
+ $squishPackage64bit = "msvc14_64"
+
+ if(($env:PROCESSOR_ARCHITECTURE -eq "AMD64") -or ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64"))
+ {
+ echo "Installing $squishPackage_64"
+ DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win64 $targetDir $squishPackage
+ mv $targetDir\$squishPackage $targetDir\$squishPackage64bit
+ }
+
+ echo "Installing $squishPackage"
+ DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win32 $targetDir $squishPackage
+}
+if($OSVersion -eq "Windows 8.1 Enterprise")
+{
+ # Squish for Visual Studio 2013
+ $squishPackage64bit = "msvc12_64"
+
+ if(($env:PROCESSOR_ARCHITECTURE -eq "AMD64") -or ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64"))
+ {
+ echo "Installing $squishPackage_64"
+ DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win64 $targetDir $squishPackage
+ mv $targetDir\$squishPackage $targetDir\$squishPackage64bit
+ }
+ else
+ {
+ echo "Change secret file to normal one"
+ attrib -h C:\Users\qt\.squish-3-license
+ }
+}
+else
+{
+ # Windows 7
+
+ # Squish for MinGW
+ $squishPackageMingw = "mingw_gcc53_posix_dwarf"
+ echo "Installing $squishPackageMingw"
+ DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win32 $targetDir $squishPackageMingw
+ mv $targetDir\$squishPackageMingw $targetDir\mingw
+
+ # Squish for Visual Studio 2015
+ $squishPackage = "msvc14"
+ $squishPackage64bit = "msvc14_64"
+
+ if(($env:PROCESSOR_ARCHITECTURE -eq "AMD64") -or ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64"))
+ {
+ echo "Installing $squishPackage64bit"
+ DownloadAndInstallSquish $version $squishBranchUrl $qtBranch win64 $targetDir $squishPackage
+ mv $targetDir\$squishPackage $targetDir\$squishPackage64bit
+ }
+
+
+}
diff --git a/coin/provisioning/qtci-linux-RHEL-7.4-x86_64/90-squish.sh b/coin/provisioning/qtci-linux-RHEL-7.4-x86_64/90-squish.sh
new file mode 100755
index 00000000..27ff15c3
--- /dev/null
+++ b/coin/provisioning/qtci-linux-RHEL-7.4-x86_64/90-squish.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+BASEDIR=$(dirname "$0")
+$BASEDIR/../common/unix/squishInstall.sh
+
diff --git a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/90-squish.sh b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/90-squish.sh
new file mode 100755
index 00000000..27ff15c3
--- /dev/null
+++ b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/90-squish.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+BASEDIR=$(dirname "$0")
+$BASEDIR/../common/unix/squishInstall.sh
+
diff --git a/coin/provisioning/qtci-linux-openSUSE-42.3-x86_64/90-squish.sh b/coin/provisioning/qtci-linux-openSUSE-42.3-x86_64/90-squish.sh
new file mode 100755
index 00000000..27ff15c3
--- /dev/null
+++ b/coin/provisioning/qtci-linux-openSUSE-42.3-x86_64/90-squish.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+BASEDIR=$(dirname "$0")
+$BASEDIR/../common/unix/squishInstall.sh
+
diff --git a/coin/provisioning/qtci-macos-10.12-x86_64/90-squish.sh b/coin/provisioning/qtci-macos-10.12-x86_64/90-squish.sh
new file mode 100755
index 00000000..27ff15c3
--- /dev/null
+++ b/coin/provisioning/qtci-macos-10.12-x86_64/90-squish.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+BASEDIR=$(dirname "$0")
+$BASEDIR/../common/unix/squishInstall.sh
+
diff --git a/coin/provisioning/qtci-osx-10.10-x86_64/90-squish.sh b/coin/provisioning/qtci-osx-10.10-x86_64/90-squish.sh
new file mode 100755
index 00000000..27ff15c3
--- /dev/null
+++ b/coin/provisioning/qtci-osx-10.10-x86_64/90-squish.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+BASEDIR=$(dirname "$0")
+$BASEDIR/../common/unix/squishInstall.sh
+
diff --git a/coin/provisioning/qtci-osx-10.11-x86_64/90-squish.sh b/coin/provisioning/qtci-osx-10.11-x86_64/90-squish.sh
new file mode 100755
index 00000000..27ff15c3
--- /dev/null
+++ b/coin/provisioning/qtci-osx-10.11-x86_64/90-squish.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+BASEDIR=$(dirname "$0")
+$BASEDIR/../common/unix/squishInstall.sh
+
diff --git a/coin/provisioning/qtci-windows-10-x86/90-squish.ps1 b/coin/provisioning/qtci-windows-10-x86/90-squish.ps1
new file mode 100644
index 00000000..ff758845
--- /dev/null
+++ b/coin/provisioning/qtci-windows-10-x86/90-squish.ps1
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\windows\squishInstall.ps1"
diff --git a/coin/provisioning/qtci-windows-10-x86_64/90-squish.ps1 b/coin/provisioning/qtci-windows-10-x86_64/90-squish.ps1
new file mode 100644
index 00000000..ff758845
--- /dev/null
+++ b/coin/provisioning/qtci-windows-10-x86_64/90-squish.ps1
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\windows\squishInstall.ps1"
diff --git a/coin/provisioning/qtci-windows-7-x86/90-squish.ps1 b/coin/provisioning/qtci-windows-7-x86/90-squish.ps1
new file mode 100644
index 00000000..ff758845
--- /dev/null
+++ b/coin/provisioning/qtci-windows-7-x86/90-squish.ps1
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\windows\squishInstall.ps1"
diff --git a/coin/provisioning/qtci-windows-8.1-x86/90-squish.ps1 b/coin/provisioning/qtci-windows-8.1-x86/90-squish.ps1
new file mode 100644
index 00000000..ff758845
--- /dev/null
+++ b/coin/provisioning/qtci-windows-8.1-x86/90-squish.ps1
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\windows\squishInstall.ps1"
diff --git a/coin/provisioning/qtci-windows-8.1-x86_64/90-squish.ps1 b/coin/provisioning/qtci-windows-8.1-x86_64/90-squish.ps1
new file mode 100644
index 00000000..ff758845
--- /dev/null
+++ b/coin/provisioning/qtci-windows-8.1-x86_64/90-squish.ps1
@@ -0,0 +1 @@
+. "$PSScriptRoot\..\common\windows\squishInstall.ps1"