flatpak.yml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. ---
  2. name: Flatpak
  3. on:
  4. release:
  5. types: [published]
  6. branches: [master, 'release/**']
  7. env:
  8. TWITCH_CLIENTID: ${{ secrets.TWITCH_CLIENT_ID }}
  9. TWITCH_HASH: ${{ secrets.TWITCH_HASH }}
  10. RESTREAM_CLIENTID: ${{ secrets.RESTREAM_CLIENTID }}
  11. RESTREAM_HASH: ${{ secrets.RESTREAM_HASH }}
  12. YOUTUBE_CLIENTID: ${{ secrets.YOUTUBE_CLIENTID }}
  13. YOUTUBE_CLIENTID_HASH: ${{ secrets.YOUTUBE_CLIENTID_HASH }}
  14. YOUTUBE_SECRET: ${{ secrets.YOUTUBE_SECRET }}
  15. YOUTUBE_SECRET_HASH: ${{ secrets.YOUTUBE_SECRET_HASH }}
  16. jobs:
  17. check_tag:
  18. name: Check release tag
  19. runs-on: [ubuntu-latest]
  20. outputs:
  21. valid_tag: ${{ steps.check_tag.outputs.valid_tag }}
  22. matrix: ${{ steps.check_tag.outputs.matrix }}
  23. steps:
  24. - name: Check the tag
  25. id: check_tag
  26. run: |
  27. shopt -s extglob
  28. case ${GITHUB_REF##*/} in
  29. +([0-9]).+([0-9]).+([0-9]) )
  30. echo 'valid_tag=${{ toJSON(true) }}' >> $GITHUB_OUTPUT
  31. echo 'matrix=["beta", "stable"]' >> $GITHUB_OUTPUT
  32. ;;
  33. +([0-9]).+([0-9]).+([0-9])-@(beta|rc)*([0-9]) )
  34. echo 'valid_tag=${{ toJSON(true) }}' >> $GITHUB_OUTPUT
  35. echo 'matrix=["beta"]' >> $GITHUB_OUTPUT
  36. ;;
  37. * ) echo 'valid_tag=${{ toJSON(false) }}' >> $GITHUB_OUTPUT ;;
  38. esac
  39. publish:
  40. name: Publish to Flathub
  41. runs-on: [ubuntu-latest]
  42. needs: check_tag
  43. if: fromJSON(needs.check_tag.outputs.valid_tag)
  44. env:
  45. FLATPAK_BUILD_PATH: flatpak_app/files/share
  46. container:
  47. image: bilelmoussaoui/flatpak-github-actions:kde-6.4
  48. options: --privileged
  49. strategy:
  50. matrix:
  51. branch: ${{ fromJSON(needs.check_tag.outputs.matrix) }}
  52. steps:
  53. - name: Checkout
  54. uses: actions/checkout@v3
  55. with:
  56. submodules: 'recursive'
  57. - name: 'Setup build environment'
  58. id: setup
  59. run: |
  60. git config --global --add safe.directory $GITHUB_WORKSPACE
  61. echo "commitHash=$(git rev-parse --short=9 HEAD)" >> $GITHUB_OUTPUT
  62. - name: Build Flatpak Manifest
  63. uses: flatpak/flatpak-github-actions/flatpak-builder@v5
  64. with:
  65. bundle: obs-studio-${{ steps.setup.outputs.commitHash }}.flatpak
  66. manifest-path: CI/flatpak/com.obsproject.Studio.json
  67. cache-key: flatpak-builder-${{ hashFiles('CI/flatpak/com.obsproject.Studio.json') }}
  68. mirror-screenshots-url: https://dl.flathub.org/repo/screenshots
  69. branch: ${{ matrix.branch }}
  70. - name: Validate AppStream
  71. shell: bash
  72. working-directory: ${{ env.FLATPAK_BUILD_PATH }}
  73. run: |
  74. appstream-util validate appdata/com.obsproject.Studio.appdata.xml
  75. - name: Verify icon and metadata in app-info
  76. shell: bash
  77. working-directory: ${{ env.FLATPAK_BUILD_PATH }}
  78. run: |
  79. test -f app-info/icons/flatpak/128x128/com.obsproject.Studio.png || { echo "Missing 128x128 icon in app-info" ; exit 1; }
  80. test -f app-info/xmls/com.obsproject.Studio.xml.gz || { echo "Missing com.obsproject.Studio.xml.gz in app-info" ; exit 1; }
  81. - name: Commit screenshots to the OSTree repository
  82. run: |
  83. ostree commit --repo=repo --canonical-permissions --branch=screenshots/x86_64 flatpak_app/screenshots
  84. - name: Publish to Flathub Beta
  85. uses: flatpak/flatpak-github-actions/flat-manager@v5
  86. if: matrix.branch == 'beta'
  87. with:
  88. flat-manager-url: https://hub.flathub.org/
  89. repository: beta
  90. token: ${{ secrets.FLATHUB_BETA_TOKEN }}
  91. - name: Publish to Flathub
  92. uses: flatpak/flatpak-github-actions/flat-manager@v5
  93. if: matrix.branch == 'stable'
  94. with:
  95. flat-manager-url: https://hub.flathub.org/
  96. repository: stable
  97. token: ${{ secrets.FLATHUB_TOKEN }}