docs: comprehensive documentation cleanup and restructuring #12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |