--- version: '{branch}-{build}' skip_tags: true max_jobs: 1 image: - Visual Studio 2017 - Ubuntu1804 configuration: - release-fastbuild - release # - debug platform: # Disable x86 builds since we only get one concurrent build on AppVeyor and x86 # failures will be caught by Jenkins. # - x86 - x64 matrix: exclude: # Ubuntu doesn't support "release-fastbuild". - image: Ubuntu1804 configuration: release-fastbuild # We only want "release-fastbuild" for Windows since "release" consumes too # much memory due to link-time code generation / whole-program optimization. - image: Visual Studio 2017 configuration: release skip_commits: files: - doc/ - .travis.yml - LICENSE - README - README.md - CHANGELOG - COPYING - CODE_OF_CONDUCT.md for: ########## UBUNTU SPECIFIC CONFIGURATION ########## - matrix: only: - image: Ubuntu1804 clone_folder: /home/appveyor/projects/mixxx cache: - /home/appveyor/.ccache install: - sudo apt-get update - sudo apt-get -y install ccache gdb libavformat-dev libchromaprint-dev libfaad-dev libflac-dev libid3tag0-dev liblilv-dev libmad0-dev libmodplug-dev libmp3lame-dev libmp4v2-dev libopus-dev libopusfile-dev libportmidi-dev libprotobuf-dev libqt5opengl5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5x11extras5-dev librubberband-dev libshout3-dev libsndfile1-dev libsoundtouch-dev libsqlite3-dev libtag1-dev libupower-glib-dev libusb-1.0-0-dev libwavpack-dev portaudio19-dev protobuf-compiler python3-pip qt5-default qt5keychain-dev qtscript5-dev xsltproc - sudo pip3 install cmake before_build: # Limit cache size to 100 MB - ccache -M 100M - ccache -c - ccache -s build_script: - export CMAKE_BUILD_PARALLEL_LEVEL="$(nproc)" - mkdir cmake_build - cd cmake_build - cmake -L -DFAAD=ON -DHSS1394=OFF -DLOCALECOMPARE=ON -DMAD=ON -DMODPLUG=ON -DOPUS=ON -DWAVPACK=ON .. - cmake --build . - sudo cmake --build . --target install test_script: - export CTEST_OUTPUT_ON_FAILURE=1 - xvfb-run -- ctest -T test --no-compress-output - xvfb-run -- cmake --build . --target benchmark after_test: - xsltproc -o ctest-to-junit-results.xml ../cmake/ctest-to-junit.xsl Testing/*/Test.xml - curl -F 'file=@ctest-to-junit-results.xml' "https://ci.appveyor.com/api/testresults/junit/$APPVEYOR_JOB_ID" ########## END UBUNTU SPECIFIC CONFIGURATION ########## ########## WINDOWS SPECIFIC CONFIGURATION ########## - matrix: only: - image: Visual Studio 2017 fast_finish: false # set this flag to true to immediately finish build once one of the jobs fails. init: - git config --global core.autocrlf input # Uncomment the following line to show RDP info at beginning of job # - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) clone_folder: c:\projects\mixxx cache: - C:\mixxx-buildserver - C:\Users\appveyor\clcache environment: ENVIRONMENTS_URL: https://downloads.mixxx.org/builds/buildserver/2.3.x-windows/ ENVIRONMENTS_PATH: C:\mixxx-buildserver ENVIRONMENT_NAME: 2.3-j00013-PLATFORM-CONFIGURATION-static-36f44bd2-minimal QT_VERSION: 5.12.0 MSVC_PATH: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community" PATH: 'C:\Python37-x64;C:\Python37-x64\Scripts;%PATH%' install: - set ENVIRONMENT_NAME=%%ENVIRONMENT_NAME:PLATFORM=%platform%%% - set ENVIRONMENT_NAME=%%ENVIRONMENT_NAME:CONFIGURATION=%configuration%%% - set WINLIB_PATH=%ENVIRONMENTS_PATH%\%ENVIRONMENT_NAME% - IF EXIST %WINLIB_PATH% ( echo Using cached environment %WINLIB_PATH%... ) else ( mkdir %ENVIRONMENTS_PATH% && echo Downloading environment %ENVIRONMENT_NAME%... && curl -fsS -L -o%ENVIRONMENTS_PATH%\%ENVIRONMENT_NAME%.zip %ENVIRONMENTS_URL%/%ENVIRONMENT_NAME%.zip && echo Unpacking environment %ENVIRONMENT_NAME% to %ENVIRONMENTS_PATH%... && 7z -o%ENVIRONMENTS_PATH% x %ENVIRONMENTS_PATH%\%ENVIRONMENT_NAME%.zip || exit 1 ) - choco install ninja - python -m pip install git+https://github.com/frerich/clcache.git before_build: - set PATH=%PATH:C:\Program Files\Git\usr\bin;=% - set QT_PATH=%WINLIB_PATH%\Qt-%QT_VERSION% - set CMAKE_BUILD_PARALLEL_LEVEL=%NUMBER_OF_CORES% - call "%MSVC_PATH%\VC\Auxiliary\Build\vcvarsall.bat" x64 - cd %APPVEYOR_BUILD_FOLDER% # Limit cache size to 100 MB - clcache -M 100000000 - clcache -c - clcache -s # Improve clcache performance - set CLCACHE_SERVER=1 - set CLCACHE_HARDLINK=1 - IF [%APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH%] == [] ( set "MIXXX_PACKAGE_NAME=mixxx-%APPVEYOR_REPO_BRANCH:/=-%-%APPVEYOR_REPO_COMMIT%" ) else ( set "MIXXX_PACKAGE_NAME=mixxx-pr-%APPVEYOR_PULL_REQUEST_NUMBER%-%APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH:/=-%-%APPVEYOR_REPO_COMMIT%" ) - ps: Start-Process clcache-server build_script: - mkdir cmake_build - cd cmake_build - cmake -L -DCPACK_PACKAGE_FILE_NAME=%MIXXX_PACKAGE_NAME% -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=C:\mixxx -DCMAKE_PREFIX_PATH=%WINLIB_PATH%;%QT_PATH% -DMEDIAFOUNDATION=ON -DOPUS=ON -DLOCALECOMPARE=ON -DSTATIC_DEPS=ON -G "Ninja" .. - cmake --build . - cmake --build . --target install # Generate WIX installer - cpack -G "WIX" test_script: # Calling mixxx-test under bash to have standard output and use stdbuf to # unbuffer standard & error output - set CTEST_OUTPUT_ON_FAILURE=1 - ctest -C "Release" -T test --no-compress-output - cmake --build . --target benchmark after_test: # Found at https://help.appveyor.com/discussions/suggestions/5298-support-ctest-xml-test-results - ps: | $ctest_xml = Get-ChildItem -Path Testing\*\Test.xml $ctest_to_junit_xsl = Get-ChildItem -Path ..\cmake\ctest-to-junit.xsl $XSLInputElement = New-Object System.Xml.Xsl.XslCompiledTransform $XSLInputElement.Load($ctest_to_junit_xsl) $XSLInputElement.Transform((Resolve-Path $ctest_xml), (Join-Path (Resolve-Path .) "ctest-to-junit-results.xml")) $wc = New-Object 'System.Net.WebClient' $wc.UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\ctest-to-junit-results.xml)) artifacts: - path: 'cmake_build/*.exe' - path: 'cmake_build/*.msi' on_finish: # Uncomment the following line if you don't want the build VM to be destroyed # and be able to RDP on it until a special “lock” file on VM desktop is deleted # The RDP session is limited by overall build time (60 min). # - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) ########## END WINDOWS SPECIFIC CONFIGURATION ########## on_success: - echo "*** SUCCESS ***" on_failure: - echo "*** FAILURE ***" on_finish: - echo "*** DONE ***" deploy: - provider: Environment name: downloads.mixxx.org notifications: - provider: Webhook url: https://mixxx.zulipchat.com/api/v1/messages method: POST content_type: application/x-www-form-urlencoded headers: Authorization: secure: 95cbVBcC4rogjE5VNdhuYm8cnjPF8+7SeQXySqcxAqrFZxK+/Kcn3Q2hRb2iZfUEKZ+EdCYwx7EbpZdSiZc5goAuJT+/QXXT/Ls+fzc+eSy4Sz1Ic5t2BjLhmYZLdnBL3uIVceNSb8GzYPQx0+xy7g== on_build_success: true on_build_failure: true on_build_status_changed: true body: "type=stream&to=appveyor&subject={{projectName}} Build {{buildVersion}} {{status}}&content=Build {{buildVersion}} {{status}}{{#isPullRequest}} (PR #{{pullRequestId}}) {{/isPullRequest}}{{#failed}} :cross_mark:{{/failed}}{{#passed}} :check_mark:{{/passed}} {{buildUrl}}"