CI for Windows and macOS (#2245)
parent
f14668330e
commit
cedf1b6b24
6 changed files with 472 additions and 178 deletions
@ -0,0 +1,138 @@ |
||||
version: 2.1.99.{build}-{branch} |
||||
|
||||
cache: |
||||
- windows/dependencies |
||||
|
||||
build: |
||||
parallel: true |
||||
verbosity: detailed |
||||
|
||||
configuration: |
||||
- release |
||||
# - debug |
||||
|
||||
branches: |
||||
except: |
||||
- v1.4 |
||||
- v1.6 |
||||
- v1.8 |
||||
|
||||
environment: |
||||
global: |
||||
QZ_VER: 2.1.99 |
||||
VSVER: 14 |
||||
ARCH: x86 |
||||
QMAKESPEC: win32-msvc2015 |
||||
MAKETOOL: jom |
||||
TOOLSDIR: C:\Qt\Tools\QtCreator |
||||
|
||||
matrix: |
||||
- QTDIR: C:\Qt\5.8\msvc2015 |
||||
- ARCH: x64 |
||||
QTDIR: C:\Qt\5.8\msvc2015_64 |
||||
- PORTABLE_BUILD: "true" |
||||
QTDIR: C:\Qt\5.8\msvc2015 |
||||
|
||||
install: |
||||
- set QZ_DIR=%CD% |
||||
- set CPU=32 |
||||
- IF /I "%ARCH%" == "x64" (set CPU=64) |
||||
- set OPENSSL_DIR="C:\OpenSSL-Win%CPU%" |
||||
- set ICU_DIR_NAME=icu4c-54_1-Win%CPU%-msvc10 |
||||
- set ICU_DOWNLOAD_URL="http://download.icu-project.org/files/icu4c/54.1/%ICU_DIR_NAME%.zip" |
||||
- call "C:\Program Files (x86)\Microsoft Visual Studio "%VSVER%".0\VC\vcvarsall.bat" %ARCH% |
||||
- set PATH=%QTDIR%\bin;%TOOLSDIR%\bin;%OPENSSL_DIR%\bin;%CD%\bin;%PATH% |
||||
|
||||
build_script: |
||||
- echo "QupZilla BUILD %APPVEYOR_BUILD_VERSION%_%QMAKESPEC%_%CONFIGURATION%_%ARCH%" |
||||
- qmake -v |
||||
- qmake CONFIG+=%CONFIGURATION% INCLUDEPATH+="%OPENSSL_DIR%\include" LIBS+=-L%OPENSSL_DIR%\lib QupZilla.pro |
||||
- call %MAKETOOL% |
||||
|
||||
test_script: |
||||
- cd %QZ_DIR%\tests\autotests |
||||
- qmake CONFIG+=%CONFIGURATION% INCLUDEPATH+="%OPENSSL_DIR%\include" LIBS+=-L%OPENSSL_DIR%\lib |
||||
- call %MAKETOOL% |
||||
- call %CONFIGURATION%\autotests.exe |
||||
|
||||
after_build: |
||||
# prepare dependencies |
||||
- echo [Paths] > %QZ_DIR%\bin\qt.conf && echo Plugins="." >> %QZ_DIR%\bin\qt.conf |
||||
- copy %QZ_DIR%\COPYRIGHT %QZ_DIR%\bin\COPYRIGHT.txt |
||||
- cd %QZ_DIR%\windows |
||||
- IF NOT EXIST "dependencies" ( mkdir dependencies ) |
||||
- cd dependencies |
||||
- IF NOT EXIST "%ICU_DIR_NAME%.zip" ( appveyor DownloadFile %ICU_DOWNLOAD_URL% ) else ( echo "Use cached %ICU_DIR_NAME%.zip") |
||||
# see: https://github.com/appveyor/ci/issues/1347 |
||||
- ps: If (![System.IO.File]::Exists("$env:APPVEYOR_BUILD_FOLDER\windows\dependencies\KillProcDll&FindProcDll.zip")) { (New-Object Net.WebClient).DownloadFile("http://nsis.sourceforge.net/mediawiki/images/5/53/KillProcDll%26FindProcDll.zip", "$env:APPVEYOR_BUILD_FOLDER\windows\dependencies\KillProcDll&FindProcDll.zip") } ELse { echo "Use cached KillProcDll&FindProcDll.zip" } |
||||
- IF NOT EXIST "Registry.zip" ( |
||||
appveyor DownloadFile "http://nsis.sourceforge.net/mediawiki/images/4/47/Registry.zip" ) else (echo "Use cached Registry.zip") |
||||
- IF NOT EXIST "AppAssocReg-0.4.zip" ( |
||||
appveyor DownloadFile "http://nsis.sourceforge.net/mediawiki/images/d/d4/AppAssocReg-0.4.zip" ) else (echo "Use cached AppAssocReg-0.4.zip") |
||||
- IF NOT EXIST "master.tar.gz" ( |
||||
appveyor DownloadFile "http://chromium.googlesource.com/chromium/deps/hunspell_dictionaries/+archive/master.tar.gz" ) else (echo "Use cached master.tar.gz") |
||||
- mkdir ..\wininstall |
||||
- cd ..\wininstall |
||||
- copy ..\*.nsh .\ |
||||
- copy ..\*.ico .\ |
||||
- copy ..\*.bmp .\ |
||||
# prepare nsis plugins |
||||
- 7z x "..\dependencies\KillProcDll&FindProcDll.zip" |
||||
- 7z x ..\dependencies\Registry.zip |
||||
- 7z x ..\dependencies\AppAssocReg-0.4.zip |
||||
- copy Desktop\Plugin\*.dll .\ |
||||
- copy Plugins\Unicode\*.dll .\ |
||||
# prepare icu |
||||
- 7z x "..\dependencies\%ICU_DIR_NAME%.zip" |
||||
# prepare qtwebengine_dictionaries |
||||
- mkdir qtwebengine_dictionaries |
||||
- cd qtwebengine_dictionaries |
||||
- 7z x ..\..\dependencies\master.tar.gz |
||||
- 7z x master.tar |
||||
- mkdir doc |
||||
- move README* doc\ |
||||
- move COPYING* doc\ |
||||
- cd %QZ_DIR%\windows |
||||
# set paths |
||||
- set OPENSSL_BIN_DIR="%OPENSSL_DIR%\bin" |
||||
- set MSVC_REDIST_DIR="C:\Program Files (x86)\Microsoft Visual Studio "%VSVER%".0\VC\redist\%ARCH%\Microsoft.VC%VSVER%0.CRT" |
||||
- set ICU_BIN_DIR="%QZ_DIR%\windows\wininstall\icu\bin" |
||||
- IF /I "%ARCH%" == "x64" (set INSTALLER_VERSION="%QZ_VER% x64" && set ICU_BIN_DIR="%QZ_DIR%\windows\wininstall\icu\bin64") else (set INSTALLER_VERSION="%QZ_VER%") |
||||
- set QTWEBENGINE_DICTIONARIES_DIR="%QZ_DIR%\windows\wininstall\qtwebengine_dictionaries" |
||||
# make installer |
||||
- IF /I "%PORTABLE_BUILD%" == "true" ( |
||||
call "C:\Program Files (x86)\NSIS\makensis.exe" /X"Unicode true" /DCUSTOM=1 /DPORTABLE=1 /DVERSION="%QZ_VER% Portable" /DARCH=%ARCH% /DMSVC_VER=%VSVER%0 /DOPENSSL_BIN_DIR=%OPENSSL_BIN_DIR% /DMSVC_REDIST_DIR=%MSVC_REDIST_DIR% /DQZ_BIN_DIR=%QZ_DIR%\bin /DICU_BIN_DIR=%ICU_BIN_DIR% /DQT_DIR=%QTDIR% /DQT_BIN_DIR=%QTDIR%\bin /DQT_PLUGINS_DIR=%QTDIR%\plugins /DQTWEBENGINE_DICTIONARIES_DIR=%QTWEBENGINE_DICTIONARIES_DIR% installer.nsi |
||||
) else ( |
||||
call "C:\Program Files (x86)\NSIS\makensis.exe" /X"Unicode true" /DCUSTOM=1 /DVERSION=%INSTALLER_VERSION% /DARCH=%ARCH% /DMSVC_VER=%VSVER%0 /DOPENSSL_BIN_DIR=%OPENSSL_BIN_DIR% /DMSVC_REDIST_DIR=%MSVC_REDIST_DIR% /DQZ_BIN_DIR=%QZ_DIR%\bin /DICU_BIN_DIR=%ICU_BIN_DIR% /DQT_DIR=%QTDIR% /DQT_BIN_DIR=%QTDIR%\bin /DQT_PLUGINS_DIR=%QTDIR%\plugins /DQTWEBENGINE_DICTIONARIES_DIR=%QTWEBENGINE_DICTIONARIES_DIR% installer.nsi |
||||
) |
||||
|
||||
artifacts: |
||||
- path: windows\QupZilla*Installer*.exe |
||||
name: QupZilla Installer (%ARCH%) |
||||
- path: bin\*.exe |
||||
name: QupZilla Executable (%ARCH%) |
||||
- path: bin\*.dll |
||||
name: QupZilla DLL (%ARCH%) |
||||
|
||||
|
||||
deploy: |
||||
release: 'Version $(qz_ver)' |
||||
tag: $(appveyor_repo_tag_name) # don't remove or modify tag field |
||||
description: 'QupZilla $(qz_ver) Windows Installer Released' |
||||
provider: GitHub |
||||
auth_token: |
||||
secure: BumEo5ic9KIrhc8RxwsKFd/L6WwC0s5LpSef9uH+PtUKICZBZAcyqnPewKUqzEFi # your encrypted token from GitHub |
||||
artifact: /QupZilla.*Installer.*\.exe/ # QupZilla Installer |
||||
draft: false |
||||
prerelease: false |
||||
on: |
||||
appveyor_repo_tag: true # deploy on tag push only |
||||
|
||||
# notifications: |
||||
# - provider: Email |
||||
# to: |
||||
# - nowrep@gmail.com |
||||
# - s.r.alavizadeh@gmail.com |
||||
# on_build_success: false |
||||
# on_build_failure: false |
||||
# on_build_status_changed: true |
||||
@ -0,0 +1,55 @@ |
||||
function Controller() { |
||||
installer.autoRejectMessageBoxes(); |
||||
installer.installationFinished.connect(function() { |
||||
gui.clickButton(buttons.NextButton); |
||||
}) |
||||
} |
||||
|
||||
Controller.prototype.WelcomePageCallback = function() { |
||||
gui.clickButton(buttons.NextButton); |
||||
} |
||||
|
||||
Controller.prototype.CredentialsPageCallback = function() { |
||||
gui.clickButton(buttons.NextButton); |
||||
} |
||||
|
||||
Controller.prototype.IntroductionPageCallback = function() { |
||||
gui.clickButton(buttons.NextButton); |
||||
} |
||||
|
||||
Controller.prototype.TargetDirectoryPageCallback = function() { |
||||
gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.value("HomeDir") + "/Qt"); |
||||
gui.clickButton(buttons.NextButton); |
||||
} |
||||
|
||||
Controller.prototype.ComponentSelectionPageCallback = function() { |
||||
var widget = gui.currentPageWidget(); |
||||
|
||||
widget.deselectAll(); |
||||
widget.selectComponent("qt.58.clang_64"); |
||||
widget.selectComponent("qt.58.qtwebengine"); |
||||
widget.selectComponent("qt.58.qtscript"); |
||||
|
||||
gui.clickButton(buttons.NextButton); |
||||
} |
||||
|
||||
Controller.prototype.LicenseAgreementPageCallback = function() { |
||||
gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true); |
||||
gui.clickButton(buttons.NextButton); |
||||
} |
||||
|
||||
Controller.prototype.StartMenuDirectoryPageCallback = function() { |
||||
gui.clickButton(buttons.NextButton); |
||||
} |
||||
|
||||
Controller.prototype.ReadyForInstallationPageCallback = function() { |
||||
gui.clickButton(buttons.NextButton); |
||||
} |
||||
|
||||
Controller.prototype.FinishedPageCallback = function() { |
||||
var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm |
||||
if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox) { |
||||
checkBoxForm.launchQtCreatorCheckBox.checked = false; |
||||
} |
||||
gui.clickButton(buttons.FinishButton); |
||||
} |
||||
Loading…
Reference in new issue