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@v4
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: dev.bnema.Dumber.desktop
98 - type: file
99 path: assets/logo.svg
100 dest-filename: logo.svg
101 - type: file
102 path: assets/logo-512.png
103 dest-filename: logo-512.png
104 - type: file
105 path: dev.bnema.Dumber.metainfo.xml
106 EOF
107 echo "Generated manifest:"
108 cat dev.bnema.Dumber.yml
109
110 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6
111 with:
112 bundle: dumber.flatpak
113 manifest-path: dev.bnema.Dumber.yml
114 cache-key: flatpak-builder-${{ steps.version.outputs.version }}
115
116 - name: Upload Flatpak to Release
117 if: startsWith(github.ref, 'refs/tags/')
118 uses: softprops/action-gh-release@v2
119 with:
120 files: dumber.flatpak
121 env:
122 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}