name: build on: push: branches: - release - prerelease - test jobs: build-mac: runs-on: macos-11 steps: - uses: actions/checkout@v3 - name: Install Qt 5.15.2 uses: jurplel/install-qt-action@v3 with: version: "5.15.2" modules: "qtwebengine" setup-python: 'false' - name: Install dependencies run: | brew update brew install ninja mpv || true - name: Release build run: | ./download_webclient.sh cd build cmake -GNinja -DQTROOT=$Qt5_DIR -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=output .. ninja install - name: Fix library paths and create dmg run: | python3 ./scripts/fix-install-names.py ./build/output/Jellyfin\ Media\ Player.app brew install create-dmg create-dmg --volname "Jellyfin Media Player" --no-internet-enable "JellyfinMediaPlayer.dmg" "./build/output/Jellyfin Media Player.app" - name: Archive production artifacts uses: actions/upload-artifact@v3 with: name: macos path: ${{ github.workspace }}/JellyfinMediaPlayer.dmg build-win64: runs-on: windows-latest steps: - uses: actions/checkout@v3 - name: Install Qt 5.15.2 uses: jurplel/install-qt-action@v3 with: version: "5.15.2" arch: "win64_msvc2019_64" modules: "qtwebengine" - name: Install dependencies run: | ./download_webclient.sh curl -L https://aka.ms/vs/17/release/vc_redist.x64.exe > vc_redist.x64.exe sed -i 's#C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Redist\\MSVC\\v142\\vcredist_x64.exe#'"$(readlink -f vc_redist.x64.exe | sed 's#/\([a-z]\)/#\1:\\#g' | tr '/' '\\' | sed 's/\\/\\\\/g')#g" bundle/win/Bundle.wxs curl -L https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip > ninja.zip unzip ninja.zip mv ninja.exe build/ curl -L https://github.com/iwalton3/mpv-winbuild-cmake/releases/download/v20230304-git-362256e/mpv-dev-x86_64-20230304-git-362256e.7z > mpv.7z 7z x mpv.7z mkdir mpv mv include mpv mv libmpv-2.dll mpv/mpv.dll echo "LIBRARY MPV" > mpv.def.fixed echo "EXPORTS" >> mpv.def.fixed cat mpv.def >> mpv.def.fixed mv mpv.def.fixed mpv.def mv mpv.def libmpv.dll.a mpv/ mv mpv build/ shell: bash - name: Build run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" cd build set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin;%CD% cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=output -DCMAKE_MAKE_PROGRAM=ninja.exe -DQTROOT=%Qt5_DIR% -DMPV_INCLUDE_DIR=mpv/include -DMPV_LIBRARY=mpv/mpv.dll -DCMAKE_INSTALL_PREFIX=output .. lib /def:mpv\mpv.def /out:mpv\mpv.dll.lib /MACHINE:X64 ninja ninja windows_package shell: cmd - name: Archive production artifacts uses: actions/upload-artifact@v3 with: name: windows path: ${{ github.workspace }}/build/JellyfinMediaPlayer-*.exe build-win32: runs-on: windows-latest steps: - uses: actions/checkout@v3 - name: Install Qt 5.15.2 uses: jurplel/install-qt-action@v3 with: version: "5.15.2" arch: "win32_msvc2019" modules: "qtwebengine" - name: Install dependencies run: | ./download_webclient.sh curl -L https://aka.ms/vs/17/release/vc_redist.x86.exe > vc_redist.x86.exe sed -i 's#C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Redist\\MSVC\\v142\\vcredist_x64.exe#'"$(readlink -f vc_redist.x86.exe | sed 's#/\([a-z]\)/#\1:\\#g' | tr '/' '\\' | sed 's/\\/\\\\/g')#g" bundle/win/Bundle.wxs curl -L https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip > ninja.zip unzip ninja.zip mv ninja.exe build/ curl -L https://github.com/iwalton3/mpv-winbuild-cmake/releases/download/v20230304-git-362256e/mpv-dev-i686-20230304-git-362256e.7z > mpv.7z 7z x mpv.7z mkdir mpv mv include mpv mv libmpv-2.dll mpv/mpv.dll echo "LIBRARY MPV" > mpv.def.fixed echo "EXPORTS" >> mpv.def.fixed cat mpv.def >> mpv.def.fixed mv mpv.def.fixed mpv.def mv mpv.def libmpv.dll.a mpv/ mv mpv build/ shell: bash - name: Build run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars32.bat" cd build set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin;%CD% cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=output -DCMAKE_MAKE_PROGRAM=ninja.exe -DQTROOT=%Qt5_DIR% -DMPV_INCLUDE_DIR=mpv/include -DMPV_LIBRARY=mpv/mpv.dll -DCMAKE_INSTALL_PREFIX=output .. lib /def:mpv\mpv.def /out:mpv\mpv.dll.lib /MACHINE:X86 ninja ninja windows_package shell: cmd - name: Archive production artifacts uses: actions/upload-artifact@v3 with: name: windows-legacy32 path: ${{ github.workspace }}/build/JellyfinMediaPlayer-*.exe build-ubuntu: strategy: matrix: tag: [kinetic, jammy, focal] runs-on: "ubuntu-latest" steps: - uses: actions/checkout@v3 - name: Docker Build run: | docker build -f deployment/Dockerfile.debian -t builddeb --build-arg TAG=${{ matrix.tag }} --build-arg IMG=ubuntu deployment docker run -v $(pwd)/deployment/dist:/dist -v $(pwd):/jellyfin -e TAG=${{ matrix.tag }} builddeb - name: Archive production artifacts uses: actions/upload-artifact@v3 with: name: ubuntu-${{ matrix.tag }} path: ${{ github.workspace }}/deployment/dist/* build-debian: strategy: matrix: tag: [bullseye, bookworm] runs-on: "ubuntu-latest" steps: - uses: actions/checkout@v3 - name: Docker Build run: | docker build -f deployment/Dockerfile.debian -t builddeb --build-arg TAG=${{ matrix.tag }} deployment docker run -v $(pwd)/deployment/dist:/dist -v $(pwd):/jellyfin -e TAG=${{ matrix.tag }} builddeb - name: Archive production artifacts uses: actions/upload-artifact@v3 with: name: debian-${{ matrix.tag }} path: ${{ github.workspace }}/deployment/dist/*