aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeikki Halmet <heikki.halmet@qt.io>2020-03-24 11:00:17 +0200
committerHeikki Halmet <heikki.halmet@qt.io>2020-05-19 07:48:51 +0300
commitb0286d6cd6c86cfc3c5dbd5a3879354996632831 (patch)
tree7e78e04c82ae08cdadfefc093b7dd00e9ef5198c
parent77604a358c91cfb2fe0df898f8ccf0eb9c7f98a6 (diff)
Provisioning: Fetch pre-installed squish from local cache
Squish installation is flaky so the installation phase has been moved from provisioning to Jenkins. Jenkins job will install the squish to target VM and copy it to local cache. This change only fetch the installed squish packages from local cache and uncompress those to VMs. Task-number: QTQAINFRA-3510 Task-number: QTQAINFRA-3107 Change-Id: I862da3250120dc6a43d9c04d973a25a691ca66a1 Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
-rwxr-xr-xcoin/provisioning/common/unix/squishInstall.sh166
-rw-r--r--coin/provisioning/common/windows/squishInstall.ps1130
2 files changed, 88 insertions, 208 deletions
diff --git a/coin/provisioning/common/unix/squishInstall.sh b/coin/provisioning/common/unix/squishInstall.sh
index 24a4d507..a0c23350 100755
--- a/coin/provisioning/common/unix/squishInstall.sh
+++ b/coin/provisioning/common/unix/squishInstall.sh
@@ -2,7 +2,7 @@
#############################################################################
##
-## Copyright (C) 2017 The Qt Company Ltd.
+## Copyright (C) 2020 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -33,120 +33,80 @@
##
#############################################################################
+# shellcheck source=./DownloadURL.sh
+source "${BASH_SOURCE%/*}/DownloadURL.sh"
+
set -ex
-# This script will install squish package for Linux and Mac.
+# This script will fetch and extract pre-buildt squish package for Linux and Mac.
# Squish is need by Release Test Automation (RTA)
-version="6.5"
-# Branch version without dot
-qtBranch="513x"
-squishFolder="/opt/squish"
-squishUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/coin/$qtBranch/"
-squishFile="squish-nosignalhandler-$version-qt$qtBranch-linux64.run"
+version="6.5.2"
+qtBranch="514x"
+installFolder="/opt"
+squishFolder="$installFolder/squish"
+preBuildCacheUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/jenkins_build/stable"
+licenseUrl="http://ci-files01-hki.intra.qt.io/input/squish/coin/.squish-3-license"
if uname -a |grep -q Darwin; then
- squishFile="squish-nosignalhandler-$version-qt$qtBranch-macx86_64.dmg"
+ compressedFolder="prebuild-squish-$version-$qtBranch-macx86_64.tar.gz"
+ sha1="91a1d7228dc4b4bd64f93191c33d2642abc97e14"
+else
+ compressedFolder="prebuild-squish-$version-$qtBranch-linux64.tar.gz"
+ sha1="63f33de55770e2588dd9f482546900e33d20f8ec"
fi
-squishLicenseUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/coin/"
-squishLicenseFile=".squish-3-license.tar.gz"
+# Check which platform
+if uname -a |grep -q Darwin; then
+ usersGroup="staff"
+ mountFolder="/Volumes"
+ squishLicenseDir="/Users/qt"
+elif uname -a |grep -q "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
-testSuite="suite_test_squish"
-testSuiteUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/coin/"
+targetFileMount="$mountFolder"/"$compressedFolder"
-# 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)"
+echo "Mounting $preBuildCacheUrl to $mountFolder"
+sudo mount "$preBuildCacheUrl" "$mountFolder"
+echo "Create $installFolder if needed"
+if [ ! -d "$installFolder" ]; then
+ sudo mkdir "$installFolder"
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
+VerifyHash "$targetFileMount" "$sha1"
-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 "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
+echo "Uncompress $compressedFolder"
+sudo tar -xzf "$targetFileMount" --directory "$installFolder"
- function UnMount {
- echo "Unmounting $mountFolder"
- sudo diskutil unmount force "$mountFolder" || sudo umount -f "$mountFolder"
- }
+echo "Unmounting $mountFolder"
+sudo diskutil unmount force "$mountFolder" || sudo umount -f "$mountFolder"
- targetFileMount="$mountFolder"/"$targetFile"
+sudo mv "$installFolder/rta_squish_$version" "$squishFolder"
- echo "Mounting $url to $mountFolder"
- sudo mount "$url" "$mountFolder"
- echo "Create $targetDirectory if needed"
- if [ ! -d "/opt" ]; then
- sudo mkdir "/opt"
- fi
- if [ ! -d "$targetDirectory" ]; then
- sudo mkdir "$targetDirectory"
- 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"
- else
- target="$targetDirectory"
- fi
- sudo tar -xzf "$targetFileMount" --directory "$target"
- UnMount
- elif [[ $targetFile == *.dmg ]]; then
- echo "'dmg-file', no need to uncompress"
- sudo cp $targetFileMount /tmp
- UnMount
- sudo hdiutil attach "/tmp/$targetFile"
- sudo /Volumes/froglogic\ Squish/Install\ Squish.app/Contents/MacOS/Squish unattended=1 targetdir="$targetDirectory/package" qtpath="$targetDirectory" > /dev/null
- mountFolder="/Volumes/froglogic Squish"
- UnMount
- elif [[ $targetFile == *.run ]]; then
- echo "'run-file', no need to uncompress"
- sudo cp $targetFileMount $targetDirectory
- UnMount
- sudo chmod +x $targetDirectory/$targetFile
- sudo $targetDirectory/$targetFile unattended=1 targetdir="$targetDirectory/package" qtpath="$targetDirectory" > /dev/null
- sudo rm -fr "$targetDirectory/$targetFile"
- if uname -a |grep -q "Ubuntu"; then
- sudo mkdir /usr/lib/tcl8.6
- sudo cp "$targetDirectory/package/tcl/lib/tcl8.6/init.tcl" /usr/lib/tcl8.6/
- fi
- else
- exit 1
+if uname -a |grep -q "Ubuntu"; then
+ if [ ! -e "/usr/lib/tcl8.6" ]; then
+ sudo mkdir /usr/lib/tcl8.6
+ sudo cp "$squishFolder/package/tcl/lib/tcl8.6/init.tcl" /usr/lib/tcl8.6/
fi
+fi
- echo "Changing ownerships"
- sudo chown -R qt:$usersGroup "$targetDirectory"
- sudo chown qt:$usersGroup "$HOME/.squish-3-license"
-}
+DownloadURL "$licenseUrl" "$licenseUrl" "3c6b2b3ca047f68e20f697afcc3a9d376f01b376" "$HOME/.squish-3-license"
-echo "Set commands for environment variables in .bashrc"
+echo "Changing ownerships"
+sudo chown -R qt:$usersGroup "$squishFolder"
+sudo chown qt:$usersGroup "$HOME/.squish-3-license"
+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:$squishFolder/squish-$version/bin" >> ~/.profile
@@ -155,19 +115,11 @@ else
echo "export PATH=\$PATH:$squishFolder/squish-$version/bin" >> ~/.bashrc
fi
-echo "Installing squish license to home directory.."
-MountAndInstall "$squishLicenseUrl" "$squishFolder" "$squishLicenseFile"
-
-echo "Installing squish $version.."
-MountAndInstall "$squishUrl" "$squishFolder" "$squishFile"
-
-echo "Installing provisioning scripts for squish"
-MountAndInstall "$testSuiteUrl" "$squishFolder" "$testSuite.tar.gz"
-
-echo "Verifying Squish Installation"
-if "$squishFolder/package/bin/squishrunner" --testsuite "$squishFolder/$testSuite" | grep "Squish test run successfully" ; then
+echo "Verifying Squish"
+if "$squishFolder/package/bin/squishrunner" --testsuite "$squishFolder/suite_test_squish" | grep "Squish test run successfully" ; then
echo "Squish installation tested successfully"
else
echo "Squish test failed! Package wasn't installed correctly."
exit 1
fi
+
diff --git a/coin/provisioning/common/windows/squishInstall.ps1 b/coin/provisioning/common/windows/squishInstall.ps1
index f8d600d7..8396743e 100644
--- a/coin/provisioning/common/windows/squishInstall.ps1
+++ b/coin/provisioning/common/windows/squishInstall.ps1
@@ -1,6 +1,6 @@
#############################################################################
##
-## Copyright (C) 2019 The Qt Company Ltd.
+## Copyright (C) 2020 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -33,120 +33,48 @@
. "$PSScriptRoot\helpers.ps1"
-# This script will install squish package for Windows.
+# This script will pre-installed squish package for Windows.
# Squish is need by Release Test Automation (RTA)
-# NOTE! Make sure 64bit versions are always installed before 32bit,
-# because they use same folder name before a rename
-
-$version = "6.5"
-
-# Qt branch without dot (*.*)
-$qtBranch = "513x"
-# So far Squish built with Qt5.12 works also with 5.13, but we have to be prepared that on some point
-# the compatibility breaks, and we may need to have separate Squish packages for different Qt versions.
+$version = "6.5.2"
+$qtBranch = "514x"
$targetDir = "C:\Utils\squish"
-$squishUrl = "\\ci-files01-hki.intra.qt.io\provisioning\squish\coin"
-$squishBranchUrl = "$squishUrl\$qtBranch"
-$testSuite = "suite_test_squish"
-$testSuiteUrl = "$squishUrl\$testSuite.7z"
+$squishPackage = "C:\Utils\rta_squish"
+$squishUrl = "\\ci-files01-hki.intra.qt.io\provisioning\squish\jenkins_build"
+$licenseUrl = "\\ci-files01-hki.intra.qt.io\provisioning\squish\coin"
# Squish license
$licensePackage = ".squish-3-license"
-$OSVersion = (get-itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName
-
-Function DownloadAndInstallSquish {
- Param (
- [string]$version,
- [string]$bit,
- [string]$squishPackage
- )
- $SquishUrl = $squishBranchUrl + "\squish-nosignalhandler-" + $version + "-qt" + $qtBranch + "-" + $bit + "-" + $squishPackage + ".exe"
- $SquishInstaller = "$targetDir\$squishPackage.exe"
- $SquishParameters = "unattended=1 targetdir=$targetDir\$squishPackage"
+Write-Host "Installing Squish license to home directory"
+Copy-Item $licenseUrl\$licensePackage ~\$licensePackage
- Write-Host "Fetching from URL $squishUrl"
- Copy-Item "$SquishUrl" "$SquishInstaller"
- Write-Host "Installing Squish"
- $stdoutFile = [System.IO.Path]::GetTempFileName()
- $stderrFile = [System.IO.Path]::GetTempFileName()
- Start-Process -FilePath "$SquishInstaller" -Wait -ArgumentList $SquishParameters -PassThru -RedirectStandardOutput $stdoutFile -RedirectStandardError $stderrFile | Out-Null
- Remove-Item -Path $SquishInstaller
- if ("$bit" -eq "win64") {
- if ($squishPackage.StartsWith("mingw")) {
- $squishPackage64bit = "mingw_64"
- } else {
- $squishPackage64bit = "$squishPackage`_64"
- }
- Rename-Item $targetDir\$squishPackage $targetDir\$squishPackage64bit
- TestSquish $squishPackage64bit
- } else {
- if ($squishPackage.StartsWith("mingw")) {
- Rename-Item $targetDir\$squishPackage $targetDir\mingw
- TestSquish mingw
- } else {
- TestSquish $squishPackage
- }
- }
+if (Is64BitWinHost) {
+ $arch = "x64"
+} else {
+ $arch = "x86"
}
-Function DownloadSquishLicence {
- Param (
- [string]$squishUrl
- )
-
- Write-Host "Installing Squish license to home directory"
- Copy-Item $squishUrl\$licensePackage ~\$licensePackage
-}
-
-Function TestSquish {
- Param (
- [string]$squishPackage
- )
-
- Write-Host "Verifying Squish Installation"
- if (cmd /c "$targetDir\$squishPackage\bin\squishrunner.exe --testsuite $targetDir\$testSuite" |Select-String -Pattern "Squish test run successfully") {
- Write-Host "Squish installation tested successfully!"
- } else {
- Write-Host "Squish test failed! $squishPackage wasn't installed correctly."
- [Environment]::Exit(1)
- }
-}
-
-Write-Host "Creating $targetDir"
-New-Item -ErrorAction Ignore -ItemType directory -Path "$targetDir"
-
-Write-Host "Download and install Test Suite for squish"
-Copy-Item $testSuiteUrl $targetDir/$testSuite.7z
-Extract-7Zip $targetDir/$testSuite.7z $targetDir
-
-DownloadSquishLicence $squishUrl
+$OSVersion = (get-itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName
if ($OSVersion -eq "Windows 10 Enterprise") {
-
+ $winVersion = "win10"
if (Is64BitWinHost) {
- DownloadAndInstallSquish $version win64 "msvc14"
- DownloadAndInstallSquish $version win64 "msvc141"
- DownloadAndInstallSquish $version win64 "mingw_gcc73_posix_seh"
+ $sha1 = "9262d3b749483094024c74986f93e9340afbdb62"
} else {
- DownloadAndInstallSquish $version win32 "mingw_gcc53_posix_dwarf"
- }
- DownloadAndInstallSquish $version win32 "msvc141"
-
-} elseif ($OSVersion -eq "Windows 8.1 Enterprise") {
-
- if (Is64BitWinHost) {
- DownloadAndInstallSquish $version win64 "msvc14"
+ $sha1 = "0763b344afa327e6c374971492021c5e923be892"
}
- DownloadAndInstallSquish $version win32 "msvc141"
-
} elseif ($OSVersion -eq "Windows 7 Enterprise") {
-
- if (Is64BitWinHost) {
- DownloadAndInstallSquish $version win64 "msvc14"
- } else {
- DownloadAndInstallSquish $version win32 "mingw_gcc53_posix_dwarf"
- }
- DownloadAndInstallSquish $version win32 "msvc141"
+ $winVersion = "win7"
+ $sha1 = "01b3529459da948cfde319d60becc666da0e1c4d"
}
+$squishArchive = "prebuild-squish-$version-$qtBranch-$winVersion-$arch.zip"
+
+Copy-Item "\\ci-files01-hki.intra.qt.io\provisioning\squish\jenkins_build\stable\$squishArchive" "C:\Utils"
+Verify-Checksum "C:\Utils\$squishArchive" $sha1
+Extract-7Zip "C:\Utils\$squishArchive" "C:\Utils"
+Rename-Item "$squishPackage" "$targetDir"
+
+Write-Host "Verifying Squish Installation for following targets:"
+get-childitem "$targetDir" -Filter squishrunner.exe -Recurse | % { $_.FullName }
+get-childitem "$targetDir" -Filter squishrunner.exe -Recurse | % { if (cmd /c $_.FullName --testsuite "$targetDir\suite_test_squish" |Select-String -Pattern "Squish test run successfully") { Write-Host "Squish tested successfully"} else { [Environment]::Exit(1) } }