Build Flatpak #9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # GitHub Action to build Flatpak using flatpak-builder | |
| # This workflow builds your Electron app as a Flatpak using flatpak-builder directly. | |
| name: Build Flatpak | |
| on: | |
| workflow_dispatch: | |
| workflow_run: | |
| workflows: ["Build and Release Electron App"] | |
| types: | |
| - completed | |
| concurrency: | |
| group: flatpak-build-${{ github.ref }} | |
| cancel-in-progress: false | |
| jobs: | |
| build-flatpak: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Cache node modules (non-Windows) | |
| id: cache_node_modules_non_windows | |
| if: runner.os != 'Windows' | |
| uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 | |
| with: | |
| path: electron-app/node_modules | |
| key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-node- | |
| enableCrossOsArchive: true | |
| continue-on-error: true | |
| - name: Install Flatpak and flatpak-builder | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y flatpak flatpak-builder elfutils | |
| flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo | |
| flatpak install -y --user flathub org.freedesktop.Platform//23.08 org.freedesktop.Sdk//23.08 | |
| flatpak update -y --user | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Install dependencies | |
| run: | | |
| cd electron-app | |
| npm install | |
| - name: Build Flatpak | |
| run: | | |
| cd electron-app | |
| ls -l | |
| # Always build the dist repo to ensure it exists and is up-to-date | |
| flatpak-builder --repo=dist --force-clean build-dir flatpak-build.yml | |
| ls -l | |
| ls -l dist | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| CI: true | |
| DEBUG: "@malept/flatpak-bundler" | |
| - name: Create FlatPak bundle | |
| run: | | |
| cd electron-app | |
| ls -l | |
| ls -l dist | |
| flatpak build-bundle dist FitFileViewer.flatpak com.nick2bad4u.fitfileviewer | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| CI: true | |
| DEBUG: "@malept/flatpak-bundler" | |
| # Optionally, upload the FlatPak bundle as an artifact | |
| - name: Upload FlatPak bundle | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: flatpak-bundle | |
| path: electron-app/FitFileViewer.flatpak | |
| - name: Zip Flatpak bundle | |
| run: | | |
| cd electron-app | |
| ls -l | |
| zip FitFileViewer.flatpak.zip FitFileViewer.flatpak | |
| - name: Get latest release tag | |
| id: get_release | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const releases = await github.rest.repos.listReleases({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| }); | |
| if (releases.data.length === 0) { | |
| throw new Error('No releases found'); | |
| } | |
| return releases.data[0].tag_name; | |
| result-encoding: string | |
| - name: Rename Flatpak and zip with version | |
| run: | | |
| cd electron-app | |
| mv FitFileViewer.flatpak FitFileViewer-${{ steps.get_release.outputs.result }}.flatpak | |
| mv FitFileViewer.flatpak.zip FitFileViewer-${{ steps.get_release.outputs.result }}.flatpak.zip | |
| - name: Upload .flatpak and .zip to latest release | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| RELEASE_TAG: ${{ steps.get_release.outputs.result }} | |
| run: | | |
| gh release upload "$RELEASE_TAG" electron-app/FitFileViewer-${RELEASE_TAG}.flatpak electron-app/FitFileViewer-${RELEASE_TAG}.flatpak.zip --clobber |