Skip to content

Commit 521834e

Browse files
authored
Prepare repo for Flathub build process (#2093)
* Removed logic to build/release a standalone flatpak file * Add flatpal-node-generator workflow to create flatpak manifest module sources * Added script to skip packaging when building * Added flatpak check to auto updater for safety * Updated flatpak-node-generator workflow to publish sources to releases over workflow artifacts * Removed workflow dispatch from flatpak-node-generator * Add main field to package.json pointing to electron-main.ts * Added images to docs folder for appstream metadata * Added yarn release and yarn path to have a consistent yarn version as long as yarn is installed - likely best way for flathub ci to use the right version * Updated build-unpackaged to be more clear and include electron binaries * Fix env var naming difference in quasar config * Reverted script name to unpacked to align with electron-builder * Updated build unpacked script to specify linux * Removed main from package.json * Fixed import quotes in quasar config * Updated all quotes to single quotes in quasar config * Added flatpak files to main repo * Removed yarn release from repo * Update flatpak node generator to commit updated file directly to repo * Added commit message to flatpak-node-generator * Updated flatpak-node-generator workflow to run on pushes where lockfile is changed * Added extra workflow dispatch to flatpak-node-generator workflow * Update flatpak/generated-sources.json * Removed .yarn dir and updated workflow to only commit generated sources.json * Updated manifest to include its own yarn source * Changed the current manifest to a template and added a manifest generator to generate a different manifest for local dev vs releasing * Added scripts to generate the manifest * Updated manifest tooling to have default manifest in repo, and generate the release manifest * Added flatpak job to release workflow to create flatpak release and upload it * Fix git error in release workflow hopefully * Updated flatpak/README.md * Updated flatpak/readme to include info on script * Fixed formatting in release workflow * Added build flatpak workflow to ensure flatpak builds * Added comments to flatpak-node-generator workflow * Fixed YAML.parse to be in try catch * Updated gitignore * Replaced install-flatpak command with build-flatpak, and added flatpak builder helper scripts * Update flatpak/generated-sources.json * Removed electron-installer-flatpak dependency * Update flatpak/generated-sources.json * Delete flatpak/generated-sources.json * updated gitignore * Updated mise.toml to include pipx * added running flatpak-node-generator yarn script to generate sources * remove workflow * Update building.md * Added script to install flatpak-node-generator * Update build/release workflows * Add uv to mise to install flatpak-node-generator * fixed flatpak-node-generator to use uv version * updated flatpak building ci to use lighter base image * Removed explicit uv tool install in favor of just using uvx * add test commands to build-flatpak workflow * updated test commands for build-flatpak workflow * removed testing from build-flatpak workflow * Try pinning flatpak-node-generator version * test debug step * more workflow testing * even more ci testing * fix attempt for flatpak-node-generator version being wrong * more workflow debugging * more workflow debugging p2 * final testing solution for workflow * reenable cache in flatpak build workflow * add python as mise dep that auto installs pipx * update yarn script to use pipx * add --install-deps-from flag to build-flatpak-repo script * Revert workflow images to gnome based * fix typo in container tag * Revert workflows to offload building process to flatpak builder action * updated documentation files * Update flatpak/README.md * Update generate-release-manifest.js to find the local directory block instead of always replacing the first source * Added flatpak release steps * Updated finish args and meta info for having host filesystem access * fixed script name in error log * Update yarn lock to fix weird dependency differences
1 parent af74f27 commit 521834e

23 files changed

Lines changed: 490 additions & 965 deletions
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Build Flatpak
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
build-flatpak:
8+
name: Build the Flatpak app
9+
runs-on: ubuntu-latest
10+
container:
11+
image: ghcr.io/flathub-infra/flatpak-github-actions:freedesktop-25.08
12+
options: --privileged
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- uses: jdx/mise-action@v3
17+
with:
18+
install: true
19+
cache: true
20+
log_level: debug
21+
22+
- name: Install Yarn dependencies
23+
run: yarn install --immutable
24+
25+
- name: Generate release manifest
26+
run: yarn generate-release-manifest
27+
28+
- name: Generate node sources
29+
run: yarn generate-node-sources
30+
31+
- name: Build flatpak
32+
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
33+
with:
34+
bundle: r2modman.flatpak
35+
manifest-path: flatpak/io.github.ebkr.r2modman.release.yaml

.github/workflows/build.yml

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ jobs:
1616
- kind: windows
1717
os: windows-latest
1818
platform: win
19-
- kind: flatpak
20-
os: ubuntu-latest
21-
platform: flatpak
2219
# Macos-11 is deprecated, macos-12 would require package updates, see PR #1409
2320
# - kind: mac
2421
# os: macos-11
@@ -35,27 +32,12 @@ jobs:
3532
- name: Install Yarn dependencies
3633
run: yarn install --immutable
3734

38-
- if: matrix.platform == 'linux' || matrix.platform == 'flatpak'
35+
- if: matrix.platform == 'linux'
3936
name: Install bsdtar # Required by electron-builder when targeting pacman.
4037
run: |
4138
sudo apt-get update -y
4239
sudo apt-get install -y libarchive-tools
4340
44-
- if: matrix.platform == 'flatpak'
45-
name: Cache Flatpak runtimes
46-
uses: actions/cache@v4
47-
with:
48-
path: ~/.local/share/flatpak
49-
key: flatpak-${{ runner.os }}-25.08
50-
51-
- if: matrix.platform == 'flatpak'
52-
name: Install Flatpak and flatpak-builder
53-
run: |
54-
sudo apt-get install -y flatpak flatpak-builder
55-
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
56-
flatpak install --user -y flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08
57-
flatpak install --user -y flathub org.electronjs.Electron2.BaseApp//25.08
58-
5941
- name: Build project
6042
id: build
6143
uses: StarUbiquitous/command-output@v1.0.1 # Store stdout/stderr to outputs.
@@ -82,5 +64,5 @@ jobs:
8264
name: Upload artifacts
8365
uses: actions/upload-artifact@v6
8466
with:
85-
path: 'dist/electron/Packaged'
86-
name: 'r2modman-${{ matrix.platform }}-build-${{ github.sha }}'
67+
path: "dist/electron/Packaged"
68+
name: "r2modman-${{ matrix.platform }}-build-${{ github.sha }}"

.github/workflows/release.yml

Lines changed: 48 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ jobs:
1717
- kind: windows
1818
os: windows-latest
1919
platform: win
20-
- kind: flatpak
21-
os: ubuntu-latest
22-
platform: flatpak
2320
steps:
2421
- uses: actions/checkout@v4
2522

@@ -32,28 +29,12 @@ jobs:
3229
- name: Install Yarn dependencies
3330
run: yarn install --immutable
3431

35-
- if: matrix.platform == 'linux' || matrix.platform == 'flatpak'
32+
- if: matrix.platform == 'linux'
3633
name: Install bsdtar # Required by electron-builder when targeting pacman.
3734
run: |
3835
sudo apt-get update -y
3936
sudo apt-get install -y libarchive-tools
4037
41-
- if: matrix.platform == 'flatpak'
42-
name: Cache Flatpak runtimes
43-
uses: actions/cache@v4
44-
with:
45-
path: ~/.local/share/flatpak
46-
key: flatpak-${{ runner.os }}-25.08
47-
48-
- if: matrix.platform == 'flatpak'
49-
name: Install Flatpak and flatpak-builder
50-
run: |
51-
sudo apt-get install -y flatpak flatpak-builder
52-
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
53-
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
54-
flatpak install --user -y flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08
55-
flatpak install --user -y flathub org.electronjs.Electron2.BaseApp//25.08
56-
5738
- name: Release project
5839
id: build
5940
uses: StarUbiquitous/command-output@v1.0.1
@@ -74,3 +55,50 @@ jobs:
7455
uses: actions/github-script@v6
7556
with:
7657
script: core.setFailed('It seems the build process failed silently. See previous step for more info.')
58+
59+
release-flatpak:
60+
name: Release for Flatpak
61+
needs: release
62+
runs-on: ubuntu-latest
63+
container:
64+
image: ghcr.io/flathub-infra/flatpak-github-actions:freedesktop-25.08
65+
options: --privileged
66+
permissions:
67+
contents: write
68+
steps:
69+
- uses: actions/checkout@v4
70+
71+
- uses: jdx/mise-action@v3
72+
with:
73+
install: true
74+
cache: true
75+
log_level: debug
76+
77+
- name: Install Yarn dependencies
78+
run: yarn install --immutable
79+
80+
- name: Generate release manifest
81+
run: yarn generate-release-manifest
82+
83+
- name: Generate node sources
84+
run: yarn generate-node-sources
85+
86+
- name: Build flatpak
87+
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
88+
with:
89+
bundle: r2modman.flatpak
90+
manifest-path: flatpak/io.github.ebkr.r2modman.release.yaml
91+
92+
- name: Compute release tag
93+
id: tag
94+
run: echo "tag=v$(node -p "require('./package.json').version")" >> "$GITHUB_OUTPUT"
95+
96+
- name: Mark checkout as safe for git
97+
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
98+
99+
- name: Append standalone flatpak to release
100+
env:
101+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
102+
TAG_NAME: ${{ steps.tag.outputs.tag }}
103+
run: |
104+
gh release upload "$TAG_NAME" r2modman.flatpak --clobber

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ yarn-error.log*
1818
log.txt
1919
.env.json
2020

21+
flatpak/io.github.ebkr.r2modman.release.yaml
22+
flatpak/repo
23+
flatpak/build
24+
.flatpak-builder
25+
flatpak/r2modman.flatpak
26+
flatpak/generated-sources.json
27+
2128
# Editor directories and files
2229
.idea
2330
.vscode

BUILDING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
- Yarn
55
- Quasar CLI (Install using `yarn global add @quasar/cli`)
66
- Python 2
7+
- pipx/flatpak-node-generator (if doing a local flatpak build)
78

89
#### Linux Build
910
- rpm builder

docs/images/configeditor.png

90.4 KB
Loading

docs/images/downloadablemods.png

178 KB
Loading

docs/images/gameselection.png

1.22 MB
Loading

docs/images/installedmodview.png

132 KB
Loading

docs/images/profiles.png

29.5 KB
Loading

0 commit comments

Comments
 (0)