# appveyor.yml # Building, testing and deployment for Windows # Syntax for this file: # https://www.appveyor.com/docs/appveyor-yml image: Visual Studio 2015 environment: LIBU2F_HOST_VERSION: "1.1.4" YKPERS_VERSION: "1.18.1" LIBUSB_VERSION: "1.0.21" PY_VERSION: "3.6.4" PYOTHERSIDE_VERSION: "1.5.3" init: # Needed for jom to work. - call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" # Add python and Qt to PATH - set PATH=C:\Python36;C:\Python36\Scripts;C:\Qt\5.9\msvc2015\bin;C:\Qt\Tools\QtCreator\bin;%PATH% - python --version install: - choco upgrade -y all - choco install swig -y --allow-empty-checksums - choco upgrade swig # Compute version before dirtying directory with PyOtherSide build - python compute-version.py yubioath-desktop- > VERSION # Build and install PyOtherSide # Reference: https://pyotherside.readthedocs.io/en/latest/#building-for-windows - mkdir lib - ps: wget "https://github.com/thp/pyotherside/archive/$env:PYOTHERSIDE_VERSION.zip" -OutFile ".\lib\pyotherside-$env:PYOTHERSIDE_VERSION.zip" - cd .\lib - 7z x pyotherside-%PYOTHERSIDE_VERSION%.zip - cd .\pyotherside-%PYOTHERSIDE_VERSION% - ps: (Get-Content .\src\qmldir).replace('pyothersideplugin', 'pyothersideplugin1') | Set-Content .\src\qmldir - ps: Clear-Content python.pri - ps: Add-Content python.pri "PYTHON_CONFIG = python3-config`nQMAKE_LIBS += -LC:\Python36\libs -lpython36`nQMAKE_CXXFLAGS += -IC:\Python36\include`n" - qmake - jom - jom install - cd %APPVEYOR_BUILD_FOLDER% build_script: - qmake yubioath-desktop.pro - jom after_build: - ps: wget "https://developers.yubico.com/libu2f-host/Releases/libu2f-host-$env:LIBU2F_HOST_VERSION-win32.zip" -OutFile "libu2f-host-$env:LIBU2F_HOST_VERSION-win32.zip" - 7z x libu2f-host-%LIBU2F_HOST_VERSION%-win32.zip -o".\libu2f-host" - ps: Copy-Item .\libu2f-host\bin\*.dll .\release -Force - ps: wget "https://developers.yubico.com/yubikey-personalization/Releases/ykpers-$env:YKPERS_VERSION-win32.zip" -OutFile "ykpers-$env:YKPERS_VERSION-win32.zip" - 7z x ykpers-%YKPERS_VERSION%-win32.zip -o".\ykpers" - ps: Copy-Item .\ykpers\bin\*.dll .\release -Force - ps: Invoke-WebRequest "http://prdownloads.sourceforge.net/libusb/libusb-$env:LIBUSB_VERSION.7z" -OutFile "libusb-$env:LIBUSB_VERSION.7z" -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::Chrome - 7z x libusb-%LIBUSB_VERSION%.7z -o".\libusb" - ps: Copy-Item .\libusb\MS32\dll\*.dll .\release -Force - ps: wget https://www.python.org/ftp/python/$env:PY_VERSION/python-$env:PY_VERSION-embed-win32.zip -OutFile python-$env:PY_VERSION-embed-win32.zip - 7z x python-%PY_VERSION%-embed-win32.zip -o".\release" # Use Qt deployment tool on executable - windeployqt .\release\yubioath-desktop.exe --qmldir=qml --no-translations --angle --release # Workaround: # Manually add pyotherside plugin to release folder. # Should be handled by windeployqt, but doesn't seem to be when QML Settings are used (?). - ps: Copy-Item C:\Qt\5.9\msvc2015\qml\io .\release -recurse -Force # Add python dependencies to release folder - ps: Copy-Item .\pymodules .\release -recurse # Remove .pyc files from release folder - ps: Get-ChildItem -File -Include *.pyc -Recurse | Remove-Item -Force - ps: Get-ChildItem -Include __pycache__ -Recurse | Remove-Item -Force # Remove .cpp source files - ps: Get-ChildItem -Include *.cpp -Recurse | Remove-Item -Force # Remove object files - ps: Get-ChildItem -Include *.obj -Recurse | Remove-Item -Force # Remove vcruntime140.dll and sqllite3.dll from python-embed - ps: Get-ChildItem -Include vcruntime140.dll -Recurse | Remove-Item -Force - ps: Get-ChildItem -Include sqlite3.dll -Recurse | Remove-Item -Force - ps: Get-ChildItem -Include _sqlite3.pyd -Recurse | Remove-Item -Force # Create zip for deployment - set ARTIFACT_NAME=%APPVEYOR_REPO_BRANCH% - if defined APPVEYOR_REPO_TAG_NAME set ARTIFACT_NAME=%APPVEYOR_REPO_TAG_NAME% - 7z a yubioath-desktop-%ARTIFACT_NAME%-win.zip .\release\* - cd %APPVEYOR_BUILD_FOLDER% artifacts: - path: yubioath-desktop-$(ARTIFACT_NAME)-win.zip deploy: - provider: S3 access_key_id: $(AWS_KEY_ID) secret_access_key: $(AWS_SECRET_KEY) bucket: $(AWS_BUCKET) folder: "yubioath-desktop" region: eu-west-1 set_public: true