DeleteCells #666
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, 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' | |
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=Release | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DNO_REALTIME_AUDIO=ON | |
-DTRACK_COVERAGE=ON | |
-DVCPKG_OVERLAY_PORTS=$(pwd)/overlays/fluidsynth | |
- name: Configure with tests on MacOS | |
if: matrix.os == 'macos-latest' | |
run: > | |
cmake -S . -B with_tests | |
-DBUILD_TESTS=ON | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DNO_REALTIME_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=Release | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake | |
-DNO_REALTIME_AUDIO=ON | |
- name: Build with tests | |
run: cmake --build with_tests --config Release | |
- name: Test on Unix | |
if: matrix.os != 'windows-latest' | |
run: cd with_tests; QT_QPA_PLATFORM=offscreen ctest --build-config Release --verbose | |
- name: Test on Windows | |
if: matrix.os == 'windows-latest' | |
run: cd with_tests; ctest --build-config Release --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 | |
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 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 | |