mirror of
git://code.qt.io/qt/qt5.git
synced 2026-01-07 15:36:54 +08:00
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>
(cherry picked from commit b0286d6cd6)
Reviewed-by: Toni Saario <toni.saario@qt.io>
This commit is contained in:
@@ -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"
|
||||
|
||||
testSuite="suite_test_squish"
|
||||
testSuiteUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/coin/"
|
||||
|
||||
# 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)"
|
||||
# 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
|
||||
|
||||
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
|
||||
targetFileMount="$mountFolder"/"$compressedFolder"
|
||||
|
||||
echo "Mounting $preBuildCacheUrl to $mountFolder"
|
||||
sudo mount "$preBuildCacheUrl" "$mountFolder"
|
||||
echo "Create $installFolder if needed"
|
||||
if [ ! -d "$installFolder" ]; then
|
||||
sudo mkdir "$installFolder"
|
||||
fi
|
||||
|
||||
function MountAndInstall {
|
||||
url=$1
|
||||
targetDirectory=$2
|
||||
targetFile=$3
|
||||
VerifyHash "$targetFileMount" "$sha1"
|
||||
|
||||
# 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"
|
||||
echo "Uncompress $compressedFolder"
|
||||
sudo tar -xzf "$targetFileMount" --directory "$installFolder"
|
||||
|
||||
echo "Unmounting $mountFolder"
|
||||
sudo diskutil unmount force "$mountFolder" || sudo umount -f "$mountFolder"
|
||||
|
||||
sudo mv "$installFolder/rta_squish_$version" "$squishFolder"
|
||||
|
||||
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
|
||||
|
||||
function UnMount {
|
||||
echo "Unmounting $mountFolder"
|
||||
sudo diskutil unmount force "$mountFolder" || sudo umount -f "$mountFolder"
|
||||
}
|
||||
DownloadURL "$licenseUrl" "$licenseUrl" "3c6b2b3ca047f68e20f697afcc3a9d376f01b376" "$HOME/.squish-3-license"
|
||||
|
||||
targetFileMount="$mountFolder"/"$targetFile"
|
||||
|
||||
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
|
||||
fi
|
||||
|
||||
echo "Changing ownerships"
|
||||
sudo chown -R qt:$usersGroup "$targetDirectory"
|
||||
sudo chown qt:$usersGroup "$HOME/.squish-3-license"
|
||||
}
|
||||
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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Write-Host "Installing Squish license to home directory"
|
||||
Copy-Item $licenseUrl\$licensePackage ~\$licensePackage
|
||||
|
||||
if (Is64BitWinHost) {
|
||||
$arch = "x64"
|
||||
} else {
|
||||
$arch = "x86"
|
||||
}
|
||||
|
||||
$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 "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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
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"
|
||||
$sha1 = "0763b344afa327e6c374971492021c5e923be892"
|
||||
}
|
||||
DownloadAndInstallSquish $version win32 "msvc141"
|
||||
|
||||
} elseif ($OSVersion -eq "Windows 8.1 Enterprise") {
|
||||
|
||||
if (Is64BitWinHost) {
|
||||
DownloadAndInstallSquish $version win64 "msvc14"
|
||||
}
|
||||
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) } }
|
||||
|
||||
Reference in New Issue
Block a user