release.yml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. name: Build and Release (Linux)
  2. on:
  3. push:
  4. tags:
  5. - 'v*'
  6. permissions:
  7. contents: write
  8. jobs:
  9. build-linux:
  10. name: Build on Ubuntu
  11. runs-on: ubuntu-latest
  12. steps:
  13. - name: Checkout repository
  14. uses: actions/checkout@v4
  15. - name: Install Flatpak & Utilities
  16. run: |
  17. sudo apt-get update
  18. sudo apt-get install -y flatpak flatpak-builder patchelf
  19. flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
  20. - name: Create Flatpak Manifest
  21. run: |
  22. cat <<EOF > plugin.json
  23. {
  24. "id": "com.obsproject.Studio.Plugin.CDRecStatus",
  25. "branch": "stable",
  26. "runtime": "com.obsproject.Studio",
  27. "runtime-version": "stable",
  28. "sdk": "org.freedesktop.Sdk//25.08",
  29. "build-extension": true,
  30. "build-options": {
  31. "prefix": "/app/plugins/cd-rec-status"
  32. },
  33. "modules": [
  34. {
  35. "name": "qtwebsockets",
  36. "buildsystem": "cmake-ninja",
  37. "build-options": {
  38. "prefix": "/app/plugins/cd-rec-status/qtws"
  39. },
  40. "sources": [
  41. {
  42. "type": "archive",
  43. "url": "https://download.qt.io/official_releases/qt/6.8/6.8.2/submodules/qtwebsockets-everywhere-src-6.8.2.tar.xz",
  44. "sha256": "919df562ba3446c8393992d112085ad2d96d23aaf802b1cd7a30bf3ba2fe8cbe"
  45. }
  46. ]
  47. },
  48. {
  49. "name": "cd-rec-status",
  50. "buildsystem": "cmake-ninja",
  51. "builddir": true,
  52. "config-opts": [
  53. "-DENABLE_FRONTEND_API=ON",
  54. "-DENABLE_QT=ON",
  55. "-DQt6WebSockets_DIR=/app/plugins/cd-rec-status/qtws/lib/cmake/Qt6WebSockets"
  56. ],
  57. "sources": [
  58. {
  59. "type": "dir",
  60. "path": "."
  61. }
  62. ]
  63. }
  64. ]
  65. }
  66. EOF
  67. - name: Build Plugin in Flatpak Sandbox
  68. run: flatpak-builder --user --install-deps-from=flathub --force-clean build-dir plugin.json
  69. - name: Package Artifacts
  70. run: |
  71. mkdir -p release_package/cd-rec-status/bin/64bit
  72. mkdir -p release_package/cd-rec-status/data
  73. find .flatpak-builder/build/cd-rec-status-* -name "cd-rec-status.so" -exec cp {} release_package/cd-rec-status/bin/64bit/ \;
  74. find .flatpak-builder/build/qtwebsockets-* -name "libQt6WebSockets.so*" -exec cp -a {} release_package/cd-rec-status/bin/64bit/ \;
  75. patchelf --force-rpath --set-rpath '$ORIGIN' release_package/cd-rec-status/bin/64bit/cd-rec-status.so
  76. cp -r data/* release_package/cd-rec-status/data/
  77. cd release_package
  78. tar -czvf ../cd-rec-status-linux-x86_64.tar.gz .
  79. - name: Upload Build Artifact
  80. uses: actions/upload-artifact@v4
  81. with:
  82. name: cd-rec-status-linux-x86_64
  83. path: cd-rec-status-linux-x86_64.tar.gz
  84. release:
  85. name: Create GitHub Release
  86. needs: build-linux
  87. runs-on: ubuntu-latest
  88. steps:
  89. - name: Download artifacts
  90. uses: actions/download-artifact@v4
  91. with:
  92. path: artifacts
  93. merge-multiple: true
  94. - name: Publish Release
  95. uses: softprops/action-gh-release@v2
  96. with:
  97. files: artifacts/*.tar.gz
  98. generate_release_notes: true