Skip to content

docs: comprehensive documentation cleanup and restructuring #12

docs: comprehensive documentation cleanup and restructuring

docs: comprehensive documentation cleanup and restructuring #12

name: Build AppImage
on:
push:
branches: [master]
tags: ["v*"]
pull_request:
branches: [master]
workflow_dispatch:
workflow_call:
jobs:
build-appimage:
permissions:
contents: read
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
python3 python3-pip python3-gi python3-gi-cairo \
gir1.2-gtk-4.0 gir1.2-adw-1 \
libgtk-4-dev libadwaita-1-dev \
libfuse2t64 wget rsync
- name: Build AppImage
run: ./appimage/build-appimage.sh
- name: Test AppImage (smoke test)
run: |
chmod +x ClamUI-*.AppImage
# Extract AppImage for testing
./ClamUI-*.AppImage --appimage-extract
# Test 1: Python interpreter works
./squashfs-root/usr/bin/python3 --version
# Test 2: ClamUI module imports successfully
./squashfs-root/usr/bin/python3 -c "
import src.main
print('src.main: OK')
"
# Test 3: GTK4/Adwaita bindings load
./squashfs-root/usr/bin/python3 -c "
from gi.repository import Gtk, Adw
print('GTK:', Gtk._version)
print('Adwaita: OK')
"
# Test 4: Core modules import (validates bundling)
./squashfs-root/usr/bin/python3 -c "
from src.core.scanner import Scanner
from src.core.settings_manager import SettingsManager
from src.core.quarantine.manager import QuarantineManager
print('Core modules: OK')
"
# Cleanup extracted files
rm -rf squashfs-root
# Only import GPG key for tag builds (releases)
- name: Import GPG key
if: startsWith(github.ref, 'refs/tags/')
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
id: gpg
# Sign AppImage on tag builds
- name: Sign AppImage
if: startsWith(github.ref, 'refs/tags/')
env:
APPIMAGETOOL_SIGN_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: |
# Download appimagetool for signing
wget -q https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x appimagetool-x86_64.AppImage
# Extract the existing AppImage
APPIMAGE=$(ls ClamUI-*.AppImage)
./$APPIMAGE --appimage-extract
# Re-package with signature
./appimagetool-x86_64.AppImage --sign --sign-key ${{ steps.gpg.outputs.fingerprint }} \
squashfs-root/ "$APPIMAGE"
# Cleanup
rm -rf squashfs-root appimagetool-x86_64.AppImage
- name: Upload AppImage artifact
uses: actions/upload-artifact@v4
with:
name: appimage-package
path: ClamUI-*.AppImage
retention-days: 7