feat: publish Flatpak to our own signed repo on each release

This commit is contained in:
LukeGus committed 2026-11-06 11:07:17 -06:00
1 parent 30db4f8024
commit 3c6229671c
9 files changed
+219 -125

No files matched your search

+56
View File
@@ -0,0 +1,56 @@
#!/usr/bin/env bash
# Builds a signed Flatpak repo and bundle from the release's portable tarballs.
# Usage: build-repo.sh <version> <tarball dir> <output dir>
# Env: FLATPAK_GPG_KEY_ID, FLATPAK_GPG_HOME, FLATPAK_REPO_URL, FLATPAK_ARCHES (optional)
set -euo pipefail
VERSION="$1"
TARBALLS="$(realpath "$2")"
mkdir -p "$3"
OUTPUT="$(realpath "$3")"
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
ARCHES="${FLATPAK_ARCHES:-x86_64 aarch64}"
APP_ID=com.karmaa.termix
WORK="$OUTPUT/.work"
rm -rf "$WORK"
mkdir -p "$WORK"
trap 'rm -rf "$WORK"' EXIT
cd "$WORK"
cp "$ROOT"/packaging/flatpak/$APP_ID.{yml,desktop,metainfo.xml} .
cp "$ROOT/public/icon.svg" "$APP_ID.svg"
convert "$ROOT/public/icon.png" -resize 256x256 icon-256.png
convert "$ROOT/public/icon.png" -resize 128x128 icon-128.png
cp "$TARBALLS/termix_linux_x64_portable.tar.gz" termix-x86_64.tar.gz
cp "$TARBALLS/termix_linux_arm64_portable.tar.gz" termix-aarch64.tar.gz
sed -i "s/VERSION_PLACEHOLDER/$VERSION/g; s/DATE_PLACEHOLDER/$(date +%Y-%m-%d)/g" "$APP_ID.metainfo.xml"
for arch in $ARCHES; do
flatpak-builder --user --arch="$arch" --install-deps-from=flathub \
--default-branch=stable --force-clean --disable-rofiles-fuse --repo=repo \
--gpg-sign="$FLATPAK_GPG_KEY_ID" --gpg-homedir="$FLATPAK_GPG_HOME" \
"build-$arch" "$APP_ID.yml"
done
flatpak build-update-repo --title=Termix --default-branch=stable \
--generate-static-deltas --prune \
--gpg-sign="$FLATPAK_GPG_KEY_ID" --gpg-homedir="$FLATPAK_GPG_HOME" repo
gpg --homedir "$FLATPAK_GPG_HOME" --export "$FLATPAK_GPG_KEY_ID" > termix.gpg
GPG_KEY="$(base64 -w0 termix.gpg)"
for arch in $ARCHES; do
name=termix_linux_flatpak.flatpak
[ "$arch" = x86_64 ] || name="termix_linux_${arch}_flatpak.flatpak"
flatpak build-bundle repo "$OUTPUT/$name" "$APP_ID" stable --arch="$arch" \
--repo-url="$FLATPAK_REPO_URL" --gpg-keys=termix.gpg \
--runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
done
mv repo "$OUTPUT/site"
for file in $APP_ID.flatpakref termix.flatpakrepo; do
sed "s|REPO_URL_PLACEHOLDER|$FLATPAK_REPO_URL|; s|GPG_KEY_PLACEHOLDER|$GPG_KEY|" \
"$ROOT/packaging/flatpak/$file" > "$OUTPUT/site/$file"
done
cp "$OUTPUT/site/$APP_ID.flatpakref" "$OUTPUT/"
@@ -1,10 +1,12 @@
[Flatpak Ref]
Name=Termix
Name=com.karmaa.termix
Branch=stable
Title=Termix
IsRuntime=false
Url=https://github.com/Termix-SSH/Termix/releases/download/VERSION_PLACEHOLDER/termix_linux_flatpak.flatpak
Url=REPO_URL_PLACEHOLDER
SuggestRemoteName=termix
RuntimeRepo=https://flathub.org/repo/flathub.flatpakrepo
GPGKey=GPG_KEY_PLACEHOLDER
Comment=Self-hosted, plugin-based server management.
Description=Termix is a free, open source, self-hosted platform for managing your servers, built on plugins. The core keeps your hosts, credentials, users and sharing, and plugins add the SSH terminal, remote desktop (RDP, VNC, Telnet), file manager, tunnels, Docker, metrics and more. It runs on web, desktop and mobile, and it is a free, self-hosted alternative to Termius.
Icon=https://raw.githubusercontent.com/Termix-SSH/Termix/main/public/icon.png
@@ -7,7 +7,9 @@
<metadata_license>CC0-1.0</metadata_license>
<project_license>Apache-2.0</project_license>
<developer_name>bugattiguy527</developer_name>
<developer id="site.termix">
<name>Termix</name>
</developer>
<description>
<p>
@@ -59,9 +61,6 @@
</keywords>
<provides>
<binary>termix</binary>
</provides>
<requires>
<internet>always</internet>
+22 -35
View File
@@ -1,9 +1,9 @@
app-id: com.karmaa.termix
runtime: org.freedesktop.Platform
runtime-version: "24.08"
runtime-version: "26.08"
sdk: org.freedesktop.Sdk
base: org.electronjs.Electron2.BaseApp
base-version: "24.08"
base-version: "26.08"
command: run.sh
separate-locales: false
@@ -26,52 +26,39 @@ finish-args:
modules:
- name: termix
buildsystem: simple
build-options:
no-debuginfo: true
strip: false
build-commands:
- chmod +x termix.AppImage
- ./termix.AppImage --appimage-extract
- install -Dm755 squashfs-root/termix /app/bin/termix
- cp -r squashfs-root/resources /app/bin/
- cp -r squashfs-root/locales /app/bin/ || true
- cp squashfs-root/*.so /app/bin/ || true
- cp squashfs-root/*.pak /app/bin/ || true
- cp squashfs-root/*.bin /app/bin/ || true
- cp squashfs-root/*.dat /app/bin/ || true
- cp squashfs-root/*.json /app/bin/ || true
- |
cat > run.sh << 'EOF'
#!/bin/bash
export TMPDIR="$XDG_RUNTIME_DIR/app/$FLATPAK_ID"
exec zypak-wrapper /app/bin/termix "$@"
EOF
- chmod +x run.sh
- rm -f app/chrome-sandbox
- mkdir -p /app/termix
- cp -a app/. /app/termix/
- install -Dm755 run.sh /app/bin/run.sh
- install -Dm644 com.karmaa.termix.desktop /app/share/applications/com.karmaa.termix.desktop
- install -Dm644 com.karmaa.termix.metainfo.xml /app/share/metainfo/com.karmaa.termix.metainfo.xml
- install -Dm644 com.karmaa.termix.svg /app/share/icons/hicolor/scalable/apps/com.karmaa.termix.svg
- install -Dm644 icon-256.png /app/share/icons/hicolor/256x256/apps/com.karmaa.termix.png || true
- install -Dm644 icon-128.png /app/share/icons/hicolor/128x128/apps/com.karmaa.termix.png || true
- install -Dm644 icon-256.png /app/share/icons/hicolor/256x256/apps/com.karmaa.termix.png
- install -Dm644 icon-128.png /app/share/icons/hicolor/128x128/apps/com.karmaa.termix.png
sources:
- type: file
url: https://github.com/Termix-SSH/Termix/releases/download/vVERSION_PLACEHOLDER/termix_linux_x64_appimage.AppImage
sha256: CHECKSUM_X64_PLACEHOLDER
dest-filename: termix.AppImage
- type: archive
path: termix-x86_64.tar.gz
dest: app
only-arches:
- x86_64
- type: file
url: https://github.com/Termix-SSH/Termix/releases/download/vVERSION_PLACEHOLDER/termix_linux_arm64_appimage.AppImage
sha256: CHECKSUM_ARM64_PLACEHOLDER
dest-filename: termix.AppImage
- type: archive
path: termix-aarch64.tar.gz
dest: app
only-arches:
- aarch64
- type: script
dest-filename: run.sh
commands:
- export TMPDIR="$XDG_RUNTIME_DIR/app/$FLATPAK_ID"
- exec zypak-wrapper /app/termix/termix "$@"
- type: file
path: com.karmaa.termix.desktop
+7
View File
@@ -0,0 +1,7 @@
[Flatpak Repo]
Title=Termix
Url=REPO_URL_PLACEHOLDER
Homepage=https://github.com/Termix-SSH/Termix
Comment=Self-hosted, plugin-based server management.
Icon=https://raw.githubusercontent.com/Termix-SSH/Termix/main/public/icon.png
GPGKey=GPG_KEY_PLACEHOLDER