main.yml 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. name: build
  2. on:
  3. push:
  4. branches:
  5. - release
  6. jobs:
  7. build-mac:
  8. runs-on: macOS-latest
  9. steps:
  10. - uses: actions/checkout@v2
  11. - name: Install Qt 5.15.2
  12. uses: jurplel/install-qt-action@v2
  13. with:
  14. version: "5.15.2"
  15. modules: "qtwebengine"
  16. - name: Install dependencies
  17. run: |
  18. brew update
  19. brew install ninja mpv
  20. - name: Release build
  21. run: |
  22. ./download_webclient.sh
  23. cd build
  24. cmake -GNinja -DQTROOT=$Qt5_DIR -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=output ..
  25. ninja install
  26. - name: Fix library paths and create dmg
  27. run: |
  28. python3 ./scripts/fix-install-names.py ./build/output/Jellyfin\ Media\ Player.app
  29. brew install create-dmg
  30. create-dmg --volname "Jellyfin Media Player" --no-internet-enable "JellyfinMediaPlayer.dmg" "./build/output/Jellyfin Media Player.app"
  31. - name: Archive production artifacts
  32. uses: actions/upload-artifact@v2
  33. with:
  34. name: macos
  35. path: ${{ github.workspace }}/JellyfinMediaPlayer.dmg
  36. build-win64:
  37. runs-on: windows-latest
  38. steps:
  39. - uses: actions/checkout@v2
  40. - name: Install Qt 5.15.2
  41. uses: jurplel/install-qt-action@v2
  42. with:
  43. version: "5.15.2"
  44. arch: "win64_msvc2019_64"
  45. modules: "qtwebengine"
  46. - name: Install dependencies
  47. run: |
  48. ./download_webclient.sh
  49. sed -i 's#Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Redist\\MSVC\\v142\\#'"$(ls -d "/c/Program Files (x86)/Microsoft Visual Studio/2019/"*"/VC/Redist/MSVC/v"* | head -n 1 | sed 's#/c/##g' | tr '/' '\\' | sed 's/\\/\\\\/g')\\\\#g" bundle/win/Bundle.wxs
  50. curl -L https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip > ninja.zip
  51. unzip ninja.zip
  52. mv ninja.exe build/
  53. curl -L https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-20210404-git-dd86f19.7z/download > mpv.7z
  54. 7z x mpv.7z
  55. mv include mpv
  56. mkdir include
  57. mv mpv include
  58. mkdir mpv
  59. mv include mpv
  60. mv mpv-1.dll mpv/mpv.dll
  61. mv mpv.def libmpv.dll.a mpv/
  62. mv mpv build/
  63. shell: bash
  64. - name: Build
  65. run: |
  66. call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
  67. cd build
  68. set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin;%CD%
  69. 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 ..
  70. lib /def:mpv\mpv.def /out:mpv\mpv.dll.lib /MACHINE:X64
  71. ninja
  72. ninja windows_package
  73. shell: cmd
  74. - name: Archive production artifacts
  75. uses: actions/upload-artifact@v2
  76. with:
  77. name: windows
  78. path: ${{ github.workspace }}/build/JellyfinMediaPlayer-*.exe
  79. build-win32:
  80. runs-on: windows-latest
  81. steps:
  82. - uses: actions/checkout@v2
  83. - name: Install Qt 5.15.2
  84. uses: jurplel/install-qt-action@v2
  85. with:
  86. version: "5.15.2"
  87. arch: "win32_msvc2019"
  88. modules: "qtwebengine"
  89. - name: Install dependencies
  90. run: |
  91. ./download_webclient.sh
  92. sed -i 's#Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Redist\\MSVC\\v142\\#'"$(ls -d "/c/Program Files (x86)/Microsoft Visual Studio/2019/"*"/VC/Redist/MSVC/v"* | head -n 1 | sed 's#/c/##g' | tr '/' '\\' | sed 's/\\/\\\\/g')\\\\#g" bundle/win/Bundle.wxs
  93. curl -L https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip > ninja.zip
  94. unzip ninja.zip
  95. mv ninja.exe build/
  96. curl -L https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-i686-20210404-git-dd86f19.7z/download > mpv.7z
  97. 7z x mpv.7z
  98. mv include mpv
  99. mkdir include
  100. mv mpv include
  101. mkdir mpv
  102. mv include mpv
  103. mv mpv-1.dll mpv/mpv.dll
  104. mv mpv.def libmpv.dll.a mpv/
  105. mv mpv build/
  106. shell: bash
  107. - name: Build
  108. run: |
  109. call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars32.bat"
  110. cd build
  111. set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin;%CD%
  112. 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 ..
  113. lib /def:mpv\mpv.def /out:mpv\mpv.dll.lib /MACHINE:X64
  114. ninja
  115. ninja windows_package
  116. shell: cmd
  117. - name: Archive production artifacts
  118. uses: actions/upload-artifact@v2
  119. with:
  120. name: windows-legacy32
  121. path: ${{ github.workspace }}/build/JellyfinMediaPlayer-*.exe
  122. build-ubuntu:
  123. strategy:
  124. matrix:
  125. tag: [focal, groovy]
  126. runs-on: "ubuntu-latest"
  127. steps:
  128. - uses: actions/checkout@v2
  129. - name: Docker Build
  130. run: |
  131. docker build -f deployment/Dockerfile.debian -t builddeb --build-arg TAG=${{ matrix.tag }} --build-arg IMG=ubuntu deployment
  132. docker run -v $(pwd)/deployment/dist:/dist -v $(pwd):/jellyfin -e TAG=${{ matrix.tag }} builddeb
  133. - name: Archive production artifacts
  134. uses: actions/upload-artifact@v2
  135. with:
  136. name: ubuntu-${{ matrix.tag }}
  137. path: ${{ github.workspace }}/deployment/dist/*
  138. build-debian:
  139. strategy:
  140. matrix:
  141. tag: [buster, bullseye]
  142. runs-on: "ubuntu-latest"
  143. steps:
  144. - uses: actions/checkout@v2
  145. - name: Docker Build
  146. run: |
  147. docker build -f deployment/Dockerfile.debian -t builddeb --build-arg TAG=${{ matrix.tag }} deployment
  148. docker run -v $(pwd)/deployment/dist:/dist -v $(pwd):/jellyfin -e TAG=${{ matrix.tag }} builddeb
  149. - name: Archive production artifacts
  150. uses: actions/upload-artifact@v2
  151. with:
  152. name: debian-${{ matrix.tag }}
  153. path: ${{ github.workspace }}/deployment/dist/*