flatpak.yml 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. ---
  2. name: Flatpak
  3. on:
  4. push:
  5. paths-ignore: ['**.md']
  6. branches: [master, 'release/**']
  7. pull_request:
  8. paths-ignore: ['**.md']
  9. branches: [master, 'release/**']
  10. release:
  11. types: [published]
  12. branches: [master, 'release/**']
  13. env:
  14. TWITCH_CLIENTID: ${{ secrets.TWITCH_CLIENT_ID }}
  15. TWITCH_HASH: ${{ secrets.TWITCH_HASH }}
  16. RESTREAM_CLIENTID: ${{ secrets.RESTREAM_CLIENTID }}
  17. RESTREAM_HASH: ${{ secrets.RESTREAM_HASH }}
  18. YOUTUBE_CLIENTID: ${{ secrets.YOUTUBE_CLIENTID }}
  19. YOUTUBE_CLIENTID_HASH: ${{ secrets.YOUTUBE_CLIENTID_HASH }}
  20. YOUTUBE_SECRET: ${{ secrets.YOUTUBE_SECRET }}
  21. YOUTUBE_SECRET_HASH: ${{ secrets.YOUTUBE_SECRET_HASH }}
  22. jobs:
  23. generate_bundle:
  24. name: Generate Flatpak Bundle
  25. runs-on: [ubuntu-latest]
  26. if: github.event_name != 'release'
  27. container:
  28. image: bilelmoussaoui/flatpak-github-actions:kde-5.15-21.08
  29. options: --privileged
  30. steps:
  31. - name: 'Check for Github Labels'
  32. if: github.event_name == 'pull_request'
  33. shell: bash
  34. run: |
  35. LABELS_URL="$(echo ${{ github.event.pull_request.url }} | sed s'/pulls/issues/')"
  36. LABEL_FOUND="$(curl -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "${LABELS_URL}/labels" | sed -n 's/.*"name": "\(.*\)",/\1/p' | grep 'Seeking Testers' || true)"
  37. if [ "${LABEL_FOUND}" = "Seeking Testers" ]; then
  38. echo "SEEKING_TESTERS=1" >> $GITHUB_ENV
  39. else
  40. echo "SEEKING_TESTERS=0" >> $GITHUB_ENV
  41. fi
  42. - name: Checkout
  43. uses: actions/[email protected]
  44. if: success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1')
  45. with:
  46. submodules: 'recursive'
  47. - name: Build Flatpak Manifest
  48. uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v4
  49. if: success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1')
  50. with:
  51. bundle: obs-studio-${{ github.sha }}.flatpak
  52. manifest-path: CI/flatpak/com.obsproject.Studio.json
  53. cache-key: flatpak-builder-${{ github.sha }}
  54. publish:
  55. name: Publish to Flathub
  56. runs-on: [ubuntu-latest]
  57. if: github.event_name == 'release'
  58. env:
  59. FLATPAK_BUILD_PATH: flatpak_app/files/share
  60. container:
  61. image: bilelmoussaoui/flatpak-github-actions:kde-5.15-21.08
  62. options: --privileged
  63. strategy:
  64. matrix:
  65. branch: [stable, beta]
  66. steps:
  67. - name: Check if job should run
  68. id: should_run
  69. if: "${{ matrix.branch != 'stable' || (!contains(github.ref, '-beta') && !contains(github.ref, '-rc')) }}"
  70. run: |
  71. echo "::set-output name=should_run::yes"
  72. - name: Checkout
  73. uses: actions/[email protected]
  74. if: steps.should_run.outputs.should_run == 'yes'
  75. with:
  76. submodules: 'recursive'
  77. - name: Build Flatpak Manifest
  78. uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@master
  79. if: steps.should_run.outputs.should_run == 'yes'
  80. with:
  81. bundle: obs-studio-${{ github.sha }}.flatpak
  82. manifest-path: CI/flatpak/com.obsproject.Studio.json
  83. cache-key: flatpak-builder-${{ github.sha }}
  84. mirror-screenshots-url: https://dl.flathub.org/repo/screenshots
  85. branch: ${{ matrix.branch }}
  86. - name: Validate AppStream
  87. shell: bash
  88. working-directory: ${{ env.FLATPAK_BUILD_PATH }}
  89. if: steps.should_run.outputs.should_run == 'yes'
  90. run: |
  91. appstream-util validate appdata/com.obsproject.Studio.appdata.xml
  92. - name: Verify icon and metadata in app-info
  93. shell: bash
  94. working-directory: ${{ env.FLATPAK_BUILD_PATH }}
  95. if: steps.should_run.outputs.should_run == 'yes'
  96. run: |
  97. test -f app-info/icons/flatpak/128x128/com.obsproject.Studio.png || { echo "Missing 128x128 icon in app-info" ; exit 1; }
  98. test -f app-info/xmls/com.obsproject.Studio.xml.gz || { echo "Missing com.obsproject.Studio.xml.gz in app-info" ; exit 1; }
  99. - name: Commit screenshots to the OSTree repository
  100. if: steps.should_run.outputs.should_run == 'yes'
  101. run: |
  102. ostree commit --repo=repo --canonical-permissions --branch=screenshots/x86_64 flatpak_app/screenshots
  103. - name: Publish to Flathub Beta
  104. uses: bilelmoussaoui/flatpak-github-actions/flat-manager@v4
  105. if: steps.should_run.outputs.should_run == 'yes' && matrix.branch == 'beta'
  106. with:
  107. flat-manager-url: https://hub.flathub.org/
  108. repository: beta
  109. token: ${{ secrets.FLATHUB_BETA_TOKEN }}
  110. - name: Publish to Flathub
  111. uses: bilelmoussaoui/flatpak-github-actions/flat-manager@v4
  112. if: steps.should_run.outputs.should_run == 'yes' && matrix.branch == 'stable'
  113. with:
  114. flat-manager-url: https://hub.flathub.org/
  115. repository: stable
  116. token: ${{ secrets.FLATHUB_TOKEN }}