2016-11-30 20:54:06 +00:00
version : OpenLP-win-ci-b{build}
2016-11-29 13:07:21 +00:00
2019-09-25 18:00:05 +00:00
cache :
- '%LOCALAPPDATA%\pip\Cache'
2020-07-10 19:45:00 +00:00
- /Users/appveyor/Libraries/Caches/pip
2019-09-25 18:00:05 +00:00
2020-07-10 19:45:00 +00:00
stack : python 3.7
2019-02-14 21:19:26 +00:00
2016-11-29 13:07:21 +00:00
environment :
2019-02-19 20:46:31 +00:00
matrix :
2020-07-10 19:45:00 +00:00
- APPVEYOR_BUILD_WORKER_IMAGE : Visual Studio 2019
PY_DIR : C:\\Python37-x64
CHOCO_VLC_ARG :
FORCE_PACKAGING : 0
FORCE_PACKAGING_MANUAL : 0
- APPVEYOR_BUILD_WORKER_IMAGE : Visual Studio 2019
PY_DIR : C:\\Python37
CHOCO_VLC_ARG : --forcex86
FORCE_PACKAGING : 0
FORCE_PACKAGING_MANUAL : 0
- APPVEYOR_BUILD_WORKER_IMAGE : macos-mojave
QT_QPA_PLATFORM : offscreen
FORCE_PACKAGING : 0
FORCE_PACKAGING_MANUAL : 0
init :
- cmd : set PATH=%PY_DIR%;%PY_DIR%\Scripts;%PATH%
2016-11-29 13:07:21 +00:00
install :
2020-07-10 19:45:00 +00:00
# Update pip
- python -m pip install --upgrade pip
# Install generic dependencies from pypi
- python -m pip install sqlalchemy alembic appdirs chardet beautifulsoup4 lxml Mako mysql-connector-python pytest mock psycopg2-binary websockets asyncio waitress six webob requests QtAwesome PyQt5 PyQtWebEngine pymediainfo PyMuPDF==1.16.7 QDarkStyle python-vlc Pyro4 zeroconf flask-cors pytest-qt pyenchant pysword
# Install Windows only dependencies
- cmd : python -m pip install pyodbc pypiwin32
# Mac only dependencies
- sh : python -m pip install pyobjc-core pyobjc-framework-Cocoa
2016-11-29 13:07:21 +00:00
build : off
test_script :
2020-07-10 19:45:00 +00:00
- ps : cd $env:APPVEYOR_BUILD_FOLDER
2016-12-15 19:26:18 +00:00
# Run the tests
2020-07-10 19:45:00 +00:00
- python -m pytest tests
2016-11-30 20:54:06 +00:00
# Go back to the user root folder
2020-07-10 19:45:00 +00:00
- cd ..
2016-11-29 13:07:21 +00:00
after_test :
2020-06-20 08:26:15 +00:00
# Only package on the master repo
2016-12-15 16:33:03 +00:00
- ps : >-
2020-07-10 19:45:00 +00:00
If ((Test-Path $env:APPVEYOR_PULL_REQUEST_HEAD_REPO_NAME) -Or ($env:FORCE_PACKAGING -eq 1)) {
# Continue on eror
$ErrorActionPreference = "Continue"
2020-06-20 08:26:15 +00:00
# This is where we create a package using PyInstaller
# Install PyInstaller
2020-07-10 19:45:00 +00:00
python -m pip install --no-warn-script-location pyinstaller
# Patch pyinstaller to fix a webengine bundle issue
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/pyinstaller/pyinstaller/d08a42c612a91cc320c54f9e812fe967b9c8594a/PyInstaller/hooks/hook-PyQt5.QtWebEngineWidgets.py" -OutFile "hook-PyQt5.QtWebEngineWidgets.py"
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/pyinstaller/pyinstaller/91481570517707fc70aa70dca9eb986c61eac35d/PyInstaller/hooks/hook-pkg_resources.py" -OutFile hook-pkg_resources.py
$sitePkgFolder = python -c "import sys; site_pkg_folder = next(p for p in sys.path if 'site-packages' in p); print(site_pkg_folder.replace('\\', '/'))"
cp hook-PyQt5.QtWebEngineWidgets.py "${sitePkgFolder}/PyInstaller/hooks/hook-PyQt5.QtWebEngineWidgets.py"
cp hook-pkg_resources.py "${sitePkgFolder}/PyInstaller/hooks/hook-pkg_resources.py"
# Some windows only stuff...
If ($isWindows) {
# Disabled portable installers - can't figure out how to make them silent
# - curl -L -O http://downloads.sourceforge.net/project/portableapps/PortableApps.com%20Installer/PortableApps.comInstaller_3.4.4.paf.exe
# - PortableApps.comInstaller_3.4.4.paf.exe /S
# - curl -L -O http://downloads.sourceforge.net/project/portableapps/PortableApps.com%20Launcher/PortableApps.comLauncher_2.2.1.paf.exe
# - PortableApps.comLauncher_2.2.1.paf.exe /S
# - curl -L -O http://downloads.sourceforge.net/project/portableapps/NSIS%20Portable/NSISPortable_3.0_English.paf.exe
# - NSISPortable_3.0_English.paf.exe /S
# Download and unpack portable-bundle
appveyor DownloadFile https://get.openlp.org/win-sdk/portable-setup.7z
7z x portable-setup.7z
# Install VLC - Windows only
choco install vlc $env:CHOCO_VLC_ARG --no-progress --limit-output
# Install HTML Help Workshop - Windows only
choco install html-help-workshop --no-progress --limit-output
}
else
{
# Install Mac only stuff
# install dmgbuild tool
python -m pip install --no-warn-script-location dmgbuild
# use brew to build enchant, needed for pyenchant
brew update --quiet
brew install enchant
}
2020-06-20 08:26:15 +00:00
# Get the packaging code
2020-07-10 19:45:00 +00:00
Invoke-WebRequest -Uri "https://gitlab.com/openlp/packaging/-/archive/master/packaging-master.zip" -OutFile packaging-master.zip
Expand-Archive -Path packaging-master.zip -DestinationPath .
2020-06-20 08:26:15 +00:00
# If this is tag/replease we should also build the manual
2020-07-10 19:45:00 +00:00
If ($env:APPVEYOR_REPO_TAG -eq $True -Or $env:FORCE_PACKAGING_MANUAL -eq 1) {
python -m pip install --no-warn-script-location sphinx sphinx_rtd_theme
2020-06-20 08:26:15 +00:00
Invoke-WebRequest -Uri "https://gitlab.com/openlp/documentation/-/archive/master/documentation-master.zip" -OutFile documentation-master.zip
2020-07-10 19:45:00 +00:00
Expand-Archive -Path documentation-master.zip -DestinationPath .
# If this is a release build, set release argument
$releaseArg = ""
If ($env:APPVEYOR_REPO_TAG -eq $True) {
$releaseArg = "--release $env:APPVEYOR_REPO_TAG_NAME"
}
2020-06-20 08:26:15 +00:00
cd packaging-master
2020-07-10 19:45:00 +00:00
If ($isWindows) {
python builders/windows-builder.py $releaseArg --skip-update -c windows/config-appveyor.ini -b "$env:APPVEYOR_BUILD_FOLDER" -d ../documentation-master --portable
} else {
# Install qt to get the lrelease tool
brew install qt
python builders/macosx-builder.py $releaseArg --skip-update -c osx/config-appveyor.ini -b "$env:APPVEYOR_BUILD_FOLDER" -d ../documentation-master
}
2020-06-20 08:26:15 +00:00
} else {
cd packaging-master
2020-07-10 19:45:00 +00:00
If ($isWindows) {
python builders/windows-builder.py --skip-update --skip-translations -c windows/config-appveyor.ini -b "$env:APPVEYOR_BUILD_FOLDER" --portable
} else {
python builders/macosx-builder.py --skip-update --skip-translations -c osx/config-appveyor.ini -b "$env:APPVEYOR_BUILD_FOLDER"
}
2020-06-20 08:26:15 +00:00
}
2016-12-15 16:33:03 +00:00
}
2016-11-30 20:54:06 +00:00
artifacts :
2019-09-25 18:00:05 +00:00
- path : dist\*.exe
2020-07-10 19:45:00 +00:00
name : Windows Portable-installer
2019-09-25 18:00:05 +00:00
- path : dist\*.msi
2020-07-10 19:45:00 +00:00
name : Windows Installer
- path : dist\*.dmg
name : MacOSX Installer