Skip to content

packaging: signed APT repository and Flatpak remote on GitHub Pages - #29

Merged
francescobianco merged 1 commit into
mainfrom
packaging/repos
Oct 13, 2026
Merged

francescobianco merged 1 commit into
mainfrom
packaging/repos

Conversation

@francescobianco

Copy link
Copy Markdown
Member

Summary

  • .github/workflows/repos.yml: runs after each successful Release (or by hand), downloads the latest .deb and .flatpak, builds both repositories, signs them and deploys them to GitHub Pages.
  • build-aux/repos/build-site.sh: builds the site.
    • APT repo: stable/main for all/amd64/arm64, signed InRelease and Release.gpg, plus a deb822 gknowledge.sources.
    • Flatpak remote: imported from the release bundle, with a static delta, gknowledge.flatpakrepo and io.gknowledge.Gknowledge.flatpakref (runtime taken from Flathub).
    • Landing page index.html with the public key fingerprint.
  • install.sh: on apt systems it adds the repository and installs from it, so updates come through apt upgrade. If the repository is unreachable it removes the source again and falls back to the release .deb. GKNOWLEDGE_NO_REPO=1 keeps the old behaviour.
  • READMEs (EN, IT, 简体中文) and ROADMAP updated.

Setup

  • Signing key: ed25519, expires in 5 years, fingerprint DC96953E166385A6606938A990FC5B455E6B8648. It is stored in the GPG_PRIVATE_KEY repository secret.
  • GitHub Pages must be enabled with Source: GitHub Actions.
  • After merging, run Package repositories once from the Actions tab. Later releases trigger it automatically.

Testing

Tested locally in debian:trixie against a local HTTP server, with a throwaway key and the v0.2.2 assets:

  • apt update verifies the signature, and apt install gknowledge installs 0.2.2 from the repo.
  • flatpak remote-add from the .flatpakrepo and flatpak remote-ls list the app. Installing from the .flatpakref with --no-deps succeeds.
  • install.sh, repo reachable: adds gknowledge.sources and installs from the repo.
  • install.sh, repo unreachable: warns, installs the release .deb, leaves no source behind, and apt update stays clean.

The workflow itself has not run yet. It needs Pages enabled and must run from main.

🤖 Generated with Claude Code

After each successful release, a workflow rebuilds both repositories
from that release's .deb and .flatpak, signs them with the key in the
GPG_PRIVATE_KEY secret and deploys them to GitHub Pages with a small
landing page. Users who add either one get updates with the rest of
their system instead of re-running the installer.

install.sh now adds the APT repository and installs from it; if the
repository is unreachable it falls back to the release .deb and
removes the source again so apt update stays clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@francescobianco
francescobianco merged commit e160e6d into main Oct 13, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant