Builder for standard app to flatpak for use in atomic distro.
- Lua 68.3%
- HTML 23.5%
- CSS 3.3%
- Terra 3.2%
- Perl 1.1%
- Other 0.6%
|
Some checks failed
Build & Publish Flatpaks / Build Flatpak OCI (push) Failing after 1m50s
Signed-off-by: Lameur <adam.auclair@outlook.fr> |
||
|---|---|---|
| .forgejo | ||
| .mise | ||
| apps/aseprite | ||
| ci | ||
| libs | ||
| tasks | ||
| .gitignore | ||
| flatpak.code-workspace | ||
| LICENSE | ||
| mise.toml | ||
| README.md | ||
📦 Flatpak Builder
Build et publication d'applications Flatpak en images OCI (registry Forgejo).
🚀 Quick Start
# Vérifier le système
mise flatpak-check
# Lister les apps
mise flatpak-list
# Builder (format bundle + OCI)
APP=aseprite mise flatpak-build
# Publier en OCI
APP=aseprite REGISTRY=git.stalla.dev/division mise flatpak-publish-oci
📁 Structure
flatpak/
├── ci/ # Scripts de build
│ ├── build.lua # Builder principal
│ ├── check-setup.lua # Vérification système
│ ├── list-apps.lua # Liste apps
│ ├── init-app.lua # Init nouvelle app
│ └── publish-oci.lua # Publication OCI
├── apps/ # Apps Flatpak (submodules)
│ └── [app]/
│ └── builder.lua # Builder spécifique
├── tasks/ # Tâches spécifiques (aseprite, etc.)
├── build/ # Build artifacts
├── oci/ # Images OCI
└── export/ # Exports Flatpak
🎯 Commandes
Build
# Toutes les apps
mise flatpak-build
# Une app spécifique
APP=aseprite mise flatpak-build
# Format spécifique
APP=aseprite OUTPUT=oci mise flatpak-build # OCI seulement
APP=aseprite OUTPUT=bundle mise flatpak-build # Bundle seulement
APP=aseprite OUTPUT=both mise flatpak-build # Les deux (défaut)
Publication OCI
# Avec credentials
APP=aseprite \
REGISTRY=git.stalla.dev/division \
REGISTRY_USER=division \
REGISTRY_TOKEN=$TOKEN \
mise flatpak-publish-oci
Maintenance
mise flatpak-clean # Nettoyer build/oci/export/logs
mise flatpak-list # Liste apps
mise flatpak-check # Vérifier système
🆕 Créer une App
# Initialiser
APP=firefox mise flatpak-init
# Éditer builder
vim apps/firefox/builder.lua
# Ajouter submodule
git submodule add https://github.com/flatpak/firefox apps/firefox
# Builder
APP=firefox mise flatpak-build
🐳 Format OCI
Publication
Les images OCI sont automatiquement créées avec OUTPUT=oci ou OUTPUT=both.
Structure OCI générée:
oci/[app]/
├── index.json
├── oci-layout
└── blobs/
Installation depuis Registry OCI
# Ajouter le remote OCI
flatpak remote-add --if-not-exists --oci myrepo \
oci+https://git.stalla.dev/division
# Installer l'app
flatpak install myrepo aseprite
🔧 Variables d'Environnement
Pour ci/build.lua
APP- App à builder (vide = toutes)VERBOSE=1- Logs détaillésDRY_RUN=1- SimulationOUTPUT-bundle|oci|both(défaut: both)
Pour ci/publish-oci.lua
APP- App à publierREGISTRY- URL registry (défaut: git.stalla.dev/division)REGISTRY_USER- UsernameREGISTRY_TOKEN- Token d'authentification
Fournies aux builders
Chaque apps/*/builder.lua reçoit:
APP_NAME- Nom appAPP_PATH- Chemin apps/[nom]BUILD_DIR- build/[nom]EXPORT_DIR- export/[nom]OCI_DIR- oci/[nom]LOG_DIR- logs/[nom]OUTPUT_FORMAT- bundle|oci|both
📋 Builder Template
Chaque app a un builder.lua qui:
- Définit le manifest Flatpak
- Build avec flatpak-builder
- Exporte le repo
- Crée bundle et/ou OCI selon OUTPUT_FORMAT
Voir apps/aseprite/builder.lua pour exemple.
🔄 CI/CD Forgejo
Le workflow .forgejo/workflows/flatpak.yml:
- Build automatique (push/PR/schedule)
- Publication OCI dans registry Forgejo
- Cache builds
- Artifacts (bundles, images OCI)
🛠️ Dépendances
# Système
sudo apt install flatpak flatpak-builder skopeo podman
# Lua
luarocks install luafilesystem lua-cjson
# mise
mise install