mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-11-07 02:55:24 +00:00
feat: publish Flatpak to our own signed repo on each release
This commit is contained in:
1 parent
30db4f8024
commit
3c6229671c
9 files changed
+219
-125
No files matched your search
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
Reference in new issue
Block a user