fix macos tests #582
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
env: | |
instruments_url: "https://ftp.osuosl.org/pub/musescore/soundfont/MuseScore_General" | |
jobs: | |
main_job: | |
continue-on-error: true | |
strategy: | |
matrix: | |
os: [ubuntu-24.04, macos-latest, macos-13, windows-latest] | |
runs-on: ${{matrix.os}} | |
steps: | |
- name: Download | |
uses: actions/[email protected] | |
- name: Update Ubuntu | |
if: matrix.os == 'ubuntu-24.04' | |
run: sudo apt update | |
- name: Install dependencies on Ubuntu | |
if: matrix.os == 'ubuntu-24.04' | |
run: > | |
sudo apt install | |
cmake | |
fluidsynth | |
libfluidsynth-dev | |
qt6-base-dev | |
qt6-wayland | |
- name: Install gcovr on Ubuntu | |
if: matrix.os == 'ubuntu-24.04' | |
run: pipx install gcovr | |
- name: Install dependencies on MacOS | |
if: matrix.os == 'macos-latest' || matrix.os == 'macos-13' | |
run: brew install fluid-synth ninja qt | |
- name: Add MSVC to path on Windows | |
if: matrix.os == 'windows-latest' | |
uses: ilammy/[email protected] | |
- name: Install cmake on Windows | |
if: matrix.os == 'windows-latest' | |
uses: lukka/[email protected] | |
- name: Install winget to get Windows packages | |
if: matrix.os == 'windows-latest' | |
uses: Cyberboss/install-winget@v1 | |
- name: Install winzip on Windows | |
if: matrix.os == 'windows-latest' | |
run: winget install -e --id Corel.WinZip --accept-source-agreements | |
- name: Install cURL on Windows | |
if: matrix.os == 'windows-latest' | |
run: winget install -e --id cURL.cURL | |
- name: Install Qt on Windows | |
if: matrix.os == 'windows-latest' | |
uses: jurplel/[email protected] | |
with: | |
version: "6.6.3" | |
cache: true | |
- name: Install vcpkg packages | |
uses: lukka/[email protected] | |
with: | |
vcpkgGitCommitId: '47364fbc300756f64f7876b549d9422d5f3ec0d3' | |
- name: Restore soundfont files from the cache if available | |
id: soundfont_step | |
uses: actions/[email protected] | |
with: | |
path: share | |
key: ${{matrix.os}}-soundfont_cache | |
- name: Download the soundfont if not in the cache | |
if: steps.soundfont_step.outputs.cache-hit != 'true' | |
run: > | |
curl "${{env.instruments_url}}/MuseScore_General.sf2" | |
--output "share/MuseScore_General.sf2" | |
- name: Download the soundfont license if not in the cache | |
if: steps.soundfont_step.outputs.cache-hit != 'true' | |
run: > | |
curl "${{env.instruments_url}}/MuseScore_General_License.md" | |
--output "share/MuseScore_General_License.md" | |
- name: Configure with tests on Ubuntu | |
if: matrix.os == 'ubuntu-24.04' | |
run: > | |
cmake -S . -B with_tests | |
-DBUILD_TESTS=ON | |
-DCMAKE_BUILD_TYPE=Debug | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DNO_WARN_AUDIO=ON | |
-DTRACK_COVERAGE=ON | |
-DVCPKG_OVERLAY_PORTS=$(pwd)/overlays/fluidsynth | |
- name: Configure with tests on MacOS 13 | |
if: matrix.os == 'macos-13' | |
run: > | |
cmake -S . -B with_tests | |
-DBUILD_TESTS=ON | |
-DCMAKE_BUILD_TYPE=Debug | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DNO_WARN_AUDIO=ON | |
-DVCPKG_OVERLAY_PORTS=$(pwd)/overlays/fluidsynth | |
- name: Configure with tests on MacOS latest | |
if: matrix.os == 'macos-latest' | |
run: > | |
cmake -S . -B with_tests | |
-DBUILD_TESTS=ON | |
-DCMAKE_BUILD_TYPE=Debug | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DNO_REALTIME_AUDIO=ON | |
-DNO_WARN_AUDIO=ON | |
-DVCPKG_OVERLAY_PORTS=$(pwd)/overlays/fluidsynth | |
- name: Configure with tests on Windows | |
if: matrix.os == 'windows-latest' | |
run: > | |
cmake -S . -B with_tests | |
-DBUILD_TESTS=ON | |
-DCMAKE_BUILD_TYPE=Debug | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DNO_WARN_AUDIO=ON | |
- name: Build with tests | |
run: cmake --build with_tests --config Debug | |
- name: Test on Unix | |
if: matrix.os != 'windows-latest' | |
run: cd with_tests; QT_QPA_PLATFORM=offscreen ctest --build-config Debug --verbose | |
- name: Test on Windows | |
if: matrix.os == 'windows-latest' | |
run: cd with_tests; ctest --build-config Debug --verbose | |
- name: Run gcovr | |
if: matrix.os == 'ubuntu-24.04' | |
run: gcovr --xml "coverage.xml" --filter "$(pwd)/src/" | |
- name: Upload code coverage | |
uses: codecov/[email protected] | |
if: matrix.os == 'ubuntu-24.04' | |
with: | |
files: ./coverage.xml | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Configure without tests on MacOS latest | |
if: matrix.os == 'macos-latest' | |
run: > | |
cmake -S . -B without_tests | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DCPACK_GENERATOR=ZIP | |
-DCPACK_PACKAGE_FILE_NAME=Justly-MacOS-arm64 | |
-DVCPKG_OVERLAY_PORTS=$(pwd)/overlays/fluidsynth | |
- name: Configure without tests on MacOS 13 | |
if: matrix.os == 'macos-13' | |
run: > | |
cmake -S . -B without_tests | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DCPACK_GENERATOR=ZIP | |
-DCPACK_PACKAGE_FILE_NAME=Justly-MacOS-x64 | |
-DVCPKG_OVERLAY_PORTS=$(pwd)/overlays/fluidsynth | |
- name: Configure without tests on Ubuntu | |
if: matrix.os == 'ubuntu-24.04' | |
run: > | |
cmake -S . -B without_tests | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DCPACK_GENERATOR=TGZ | |
-DCPACK_PACKAGE_FILE_NAME=Justly-Linux | |
-DVCPKG_OVERLAY_PORTS=$(pwd)/overlays/fluidsynth | |
- name: Configure without tests on Windows | |
if: matrix.os == 'windows-latest' | |
run: > | |
cmake -S . -B without_tests | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DCPACK_GENERATOR=ZIP | |
-DCPACK_PACKAGE_FILE_NAME=Justly-Windows | |
-DCMAKE_VERBOSE_MAKEFILE=ON | |
- name: Build without tests | |
run: cmake --build without_tests --config Release | |
- name: Package | |
run: cd without_tests; cpack -C Release | |
- name: Release on a new tag | |
if: startsWith(github.ref, 'refs/tags/') | |
uses: softprops/[email protected] | |
with: | |
files: | | |
**/Justly-*.tar.gz | |
**/Justly-*.zip | |