flatpak.yml RawHistoryFolder
1name: Flatpak
2
3on:
4 push:
5 tags:
6 - 'v*'
7 workflow_dispatch:
8 inputs:
9 tag:
10 description: 'Release tag to build (e.g., v0.23.0)'
11 required: true
12
13permissions:
14 contents: write
15
16jobs:
17 flatpak:
18 name: Build Flatpak
19 runs-on: ubuntu-latest
20 container:
21 image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48
22 options: --privileged
23 steps:
24 - uses: actions/checkout@v7.0.1
25
26 - name: Get version
27 id: version
28 run: |
29 if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
30 VERSION="${{ github.event.inputs.tag }}"
31 else
32 VERSION="${GITHUB_REF#refs/tags/}"
33 fi
34 echo "version=$VERSION" >> $GITHUB_OUTPUT
35 echo "Building Flatpak for version: $VERSION"
36
37 - name: Wait for release assets
38 run: |
39 VERSION="${{ steps.version.outputs.version }}"
40 URL="https://github.com/bnema/dumber/releases/download/${VERSION}/dumber_linux_x86_64.tar.gz"
41 echo "Waiting for release asset: $URL"
42 for i in $(seq 1 30); do
43 if curl -sL --fail -o /dev/null "$URL"; then
44 echo "Release asset available!"
45 exit 0
46 fi
47 echo "Attempt $i/30: Asset not ready, waiting 10s..."
48 sleep 10
49 done
50 echo "Timeout waiting for release asset"
51 exit 1
52
53 - name: Download and compute SHA256
54 id: sha256
55 run: |
56 VERSION="${{ steps.version.outputs.version }}"
57 URL="https://github.com/bnema/dumber/releases/download/${VERSION}/dumber_linux_x86_64.tar.gz"
58 SHA256=$(curl -sL "$URL" | sha256sum | cut -d' ' -f1)
59 echo "sha256=$SHA256" >> $GITHUB_OUTPUT
60 echo "SHA256: $SHA256"
61
62 - name: Generate manifest
63 run: |
64 VERSION="${{ steps.version.outputs.version }}"
65 SHA256="${{ steps.sha256.outputs.sha256 }}"
66 cat > dev.bnema.Dumber.yml << EOF
67 id: dev.bnema.Dumber
68 runtime: org.gnome.Platform
69 runtime-version: '48'
70 sdk: org.gnome.Sdk
71 command: dumber
72
73 finish-args:
74 - --socket=wayland
75 - --device=dri
76 - --share=network
77 - --socket=pulseaudio
78 - --device=all
79 - --filesystem=xdg-download
80 - --filesystem=home:ro
81 - --filesystem=xdg-run/pipewire-0:ro
82
83 modules:
84 - name: dumber
85 buildsystem: simple
86 build-commands:
87 - install -Dm755 dumber /app/bin/dumber
88 - install -Dm644 dev.bnema.Dumber.desktop /app/share/applications/dev.bnema.Dumber.desktop
89 - install -Dm644 logo.svg /app/share/icons/hicolor/scalable/apps/dev.bnema.Dumber.svg
90 - install -Dm644 logo-512.png /app/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png
91 - install -Dm644 dev.bnema.Dumber.metainfo.xml /app/share/metainfo/dev.bnema.Dumber.metainfo.xml
92 sources:
93 - type: archive
94 url: https://github.com/bnema/dumber/releases/download/${VERSION}/dumber_linux_x86_64.tar.gz
95 sha256: ${SHA256}
96 - type: file
97 path: flatpak/dev.bnema.Dumber.desktop
98 dest-filename: dev.bnema.Dumber.desktop
99 - type: file
100 path: assets/logo.svg
101 dest-filename: logo.svg
102 - type: file
103 path: assets/logo-512.png
104 dest-filename: logo-512.png
105 - type: file
106 path: flatpak/dev.bnema.Dumber.metainfo.xml
107 dest-filename: dev.bnema.Dumber.metainfo.xml
108 EOF
109 echo "Generated manifest:"
110 cat dev.bnema.Dumber.yml
111
112 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6
113 with:
114 bundle: dumber.flatpak
115 manifest-path: dev.bnema.Dumber.yml
116 cache-key: flatpak-builder-${{ steps.version.outputs.version }}
117
118 - name: Upload Flatpak to Release
119 uses: softprops/action-gh-release@v3
120 with:
121 tag_name: ${{ steps.version.outputs.version }}
122 files: dumber.flatpak
123 env:
124 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}