From 462a2aae2b8ba298d893ba52d16c1b13435f04ff Mon Sep 17 00:00:00 2001 From: Heikki Halmet Date: Mon, 24 Apr 2017 12:31:38 +0300 Subject: Provisioning: Add Squish provisioning for Release Test Automation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squish is required by RTA for testing. Task-number: QTQAINFRA-1523 Change-Id: I0c3653565f19cc9b798a0b63325c47b017cf5537 Reviewed-by: Joni Jäntti Reviewed-by: Matti Paaso --- coin/provisioning/common/unix/squishInstall.sh | 211 +++++++++++++++++++++ coin/provisioning/common/windows/helpers.ps1 | 16 ++ coin/provisioning/common/windows/squishInstall.ps1 | 163 ++++++++++++++++ .../qtci-linux-RHEL-7.4-x86_64/90-squish.sh | 4 + .../qtci-linux-Ubuntu-16.04-x86_64/90-squish.sh | 4 + .../qtci-linux-openSUSE-42.3-x86_64/90-squish.sh | 4 + .../qtci-macos-10.12-x86_64/90-squish.sh | 4 + .../qtci-osx-10.10-x86_64/90-squish.sh | 4 + .../qtci-osx-10.11-x86_64/90-squish.sh | 4 + .../provisioning/qtci-windows-10-x86/90-squish.ps1 | 1 + .../qtci-windows-10-x86_64/90-squish.ps1 | 1 + coin/provisioning/qtci-windows-7-x86/90-squish.ps1 | 1 + .../qtci-windows-8.1-x86/90-squish.ps1 | 1 + .../qtci-windows-8.1-x86_64/90-squish.ps1 | 1 + 14 files changed, 419 insertions(+) create mode 100755 coin/provisioning/common/unix/squishInstall.sh create mode 100644 coin/provisioning/common/windows/squishInstall.ps1 create mode 100755 coin/provisioning/qtci-linux-RHEL-7.4-x86_64/90-squish.sh create mode 100755 coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/90-squish.sh create mode 100755 coin/provisioning/qtci-linux-openSUSE-42.3-x86_64/90-squish.sh create mode 100755 coin/provisioning/qtci-macos-10.12-x86_64/90-squish.sh create mode 100755 coin/provisioning/qtci-osx-10.10-x86_64/90-squish.sh create mode 100755 coin/provisioning/qtci-osx-10.11-x86_64/90-squish.sh create mode 100644 coin/provisioning/qtci-windows-10-x86/90-squish.ps1 create mode 100644 coin/provisioning/qtci-windows-10-x86_64/90-squish.ps1 create mode 100644 coin/provisioning/qtci-windows-7-x86/90-squish.ps1 create mode 100644 coin/provisioning/qtci-windows-8.1-x86/90-squish.ps1 create mode 100644 coin/provisioning/qtci-windows-8.1-x86_64/90-squish.ps1 (limited to 'coin') 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" -- cgit v1.2.3