feat(build): add Flatpak packaging support for Linux (#404)
Add electron-builder Flatpak configuration with Freedesktop 24.08 runtime and Electron2 base. Includes new package:flatpak script and documentation. Updates release workflow to: - Install flatpak-builder and required runtimes on Linux runner - Include .flatpak in artifact upload, collection, and validation - Scan .flatpak files with VirusTotal Signed-off-by: Mitsu13Ion <50143759+Mitsu13Ion@users.noreply.github.com> Co-authored-by: Andy <119136210+AndyMik90@users.noreply.github.com>
This commit is contained in:
@@ -250,6 +250,14 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: cd apps/frontend && npm ci
|
run: cd apps/frontend && npm ci
|
||||||
|
|
||||||
|
- name: Setup Flatpak
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y flatpak flatpak-builder
|
||||||
|
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||||
|
flatpak install -y --user flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08
|
||||||
|
flatpak install -y --user flathub org.electronjs.Electron2.BaseApp//25.08
|
||||||
|
|
||||||
- name: Cache bundled Python
|
- name: Cache bundled Python
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
@@ -273,6 +281,7 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
apps/frontend/dist/*.AppImage
|
apps/frontend/dist/*.AppImage
|
||||||
apps/frontend/dist/*.deb
|
apps/frontend/dist/*.deb
|
||||||
|
apps/frontend/dist/*.flatpak
|
||||||
|
|
||||||
create-release:
|
create-release:
|
||||||
needs: [build-macos-intel, build-macos-arm64, build-windows, build-linux]
|
needs: [build-macos-intel, build-macos-arm64, build-windows, build-linux]
|
||||||
@@ -292,12 +301,12 @@ jobs:
|
|||||||
- name: Flatten and validate artifacts
|
- name: Flatten and validate artifacts
|
||||||
run: |
|
run: |
|
||||||
mkdir -p release-assets
|
mkdir -p release-assets
|
||||||
find dist -type f \( -name "*.dmg" -o -name "*.zip" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" \) -exec cp {} release-assets/ \;
|
find dist -type f \( -name "*.dmg" -o -name "*.zip" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" -o -name "*.flatpak" \) -exec cp {} release-assets/ \;
|
||||||
|
|
||||||
# Validate that at least one artifact was copied
|
# Validate that at least one artifact was copied
|
||||||
artifact_count=$(find release-assets -type f \( -name "*.dmg" -o -name "*.zip" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" \) | wc -l)
|
artifact_count=$(find release-assets -type f \( -name "*.dmg" -o -name "*.zip" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" -o -name "*.flatpak" \) | wc -l)
|
||||||
if [ "$artifact_count" -eq 0 ]; then
|
if [ "$artifact_count" -eq 0 ]; then
|
||||||
echo "::error::No build artifacts found! Expected .dmg, .zip, .exe, .AppImage, or .deb files."
|
echo "::error::No build artifacts found! Expected .dmg, .zip, .exe, .AppImage, .deb, or .flatpak files."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -326,7 +335,7 @@ jobs:
|
|||||||
echo "## VirusTotal Scan Results" > vt_results.md
|
echo "## VirusTotal Scan Results" > vt_results.md
|
||||||
echo "" >> vt_results.md
|
echo "" >> vt_results.md
|
||||||
|
|
||||||
for file in release-assets/*.{exe,dmg,AppImage,deb}; do
|
for file in release-assets/*.{exe,dmg,AppImage,deb,flatpak}; do
|
||||||
[ -f "$file" ] || continue
|
[ -f "$file" ] || continue
|
||||||
filename=$(basename "$file")
|
filename=$(basename "$file")
|
||||||
filesize=$(stat -c%s "$file" 2>/dev/null || stat -f%z "$file")
|
filesize=$(stat -c%s "$file" 2>/dev/null || stat -f%z "$file")
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
| **macOS (Intel)** | [Auto-Claude-2.7.2-beta.10-darwin-x64.dmg](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-darwin-x64.dmg) |
|
| **macOS (Intel)** | [Auto-Claude-2.7.2-beta.10-darwin-x64.dmg](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-darwin-x64.dmg) |
|
||||||
| **Linux** | [Auto-Claude-2.7.2-beta.10-linux-x86_64.AppImage](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-linux-x86_64.AppImage) |
|
| **Linux** | [Auto-Claude-2.7.2-beta.10-linux-x86_64.AppImage](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-linux-x86_64.AppImage) |
|
||||||
| **Linux (Debian)** | [Auto-Claude-2.7.2-beta.10-linux-amd64.deb](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-linux-amd64.deb) |
|
| **Linux (Debian)** | [Auto-Claude-2.7.2-beta.10-linux-amd64.deb](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-linux-amd64.deb) |
|
||||||
|
| **Linux (Flatpak)** | [Auto-Claude-2.7.2-beta.10-linux-x86_64.flatpak](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-linux-x86_64.flatpak) |
|
||||||
<!-- BETA_DOWNLOADS_END -->
|
<!-- BETA_DOWNLOADS_END -->
|
||||||
|
|
||||||
> All releases include SHA256 checksums and VirusTotal scan results for security verification.
|
> All releases include SHA256 checksums and VirusTotal scan results for security verification.
|
||||||
@@ -187,6 +188,28 @@ npm start
|
|||||||
|
|
||||||
See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed development setup.
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed development setup.
|
||||||
|
|
||||||
|
### Building Flatpak
|
||||||
|
|
||||||
|
To build the Flatpak package, you need additional dependencies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Fedora/RHEL
|
||||||
|
sudo dnf install flatpak-builder
|
||||||
|
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo apt install flatpak-builder
|
||||||
|
|
||||||
|
# Install required Flatpak runtimes
|
||||||
|
flatpak install flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08
|
||||||
|
flatpak install flathub org.electronjs.Electron2.BaseApp//25.08
|
||||||
|
|
||||||
|
# Build the Flatpak
|
||||||
|
cd apps/frontend
|
||||||
|
npm run package:flatpak
|
||||||
|
```
|
||||||
|
|
||||||
|
The Flatpak will be created in `apps/frontend/dist/`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Security
|
## Security
|
||||||
@@ -215,6 +238,7 @@ All releases are:
|
|||||||
| `npm run package:mac` | Package for macOS |
|
| `npm run package:mac` | Package for macOS |
|
||||||
| `npm run package:win` | Package for Windows |
|
| `npm run package:win` | Package for Windows |
|
||||||
| `npm run package:linux` | Package for Linux |
|
| `npm run package:linux` | Package for Linux |
|
||||||
|
| `npm run package:flatpak` | Package as Flatpak |
|
||||||
| `npm run lint` | Run linter |
|
| `npm run lint` | Run linter |
|
||||||
| `npm test` | Run frontend tests |
|
| `npm test` | Run frontend tests |
|
||||||
| `npm run test:backend` | Run backend tests |
|
| `npm run test:backend` | Run backend tests |
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
"package:mac": "npm run python:download && electron-vite build && electron-builder --mac --publish never",
|
"package:mac": "npm run python:download && electron-vite build && electron-builder --mac --publish never",
|
||||||
"package:win": "npm run python:download && electron-vite build && electron-builder --win --publish never",
|
"package:win": "npm run python:download && electron-vite build && electron-builder --win --publish never",
|
||||||
"package:linux": "npm run python:download && electron-vite build && electron-builder --linux --publish never",
|
"package:linux": "npm run python:download && electron-vite build && electron-builder --linux --publish never",
|
||||||
|
"package:flatpak": "npm run python:download && electron-vite build && electron-builder --linux flatpak --publish never",
|
||||||
"start:packaged:mac": "open dist/mac-arm64/Auto-Claude.app || open dist/mac/Auto-Claude.app",
|
"start:packaged:mac": "open dist/mac-arm64/Auto-Claude.app || open dist/mac/Auto-Claude.app",
|
||||||
"start:packaged:win": "start \"\" \"dist\\win-unpacked\\Auto-Claude.exe\"",
|
"start:packaged:win": "start \"\" \"dist\\win-unpacked\\Auto-Claude.exe\"",
|
||||||
"start:packaged:linux": "./dist/linux-unpacked/auto-claude",
|
"start:packaged:linux": "./dist/linux-unpacked/auto-claude",
|
||||||
@@ -205,9 +206,26 @@
|
|||||||
"icon": "resources/icon.png",
|
"icon": "resources/icon.png",
|
||||||
"target": [
|
"target": [
|
||||||
"AppImage",
|
"AppImage",
|
||||||
"deb"
|
"deb",
|
||||||
|
"flatpak"
|
||||||
],
|
],
|
||||||
"category": "Development"
|
"category": "Development"
|
||||||
|
},
|
||||||
|
"flatpak": {
|
||||||
|
"runtime": "org.freedesktop.Platform",
|
||||||
|
"runtimeVersion": "25.08",
|
||||||
|
"sdk": "org.freedesktop.Sdk",
|
||||||
|
"base": "org.electronjs.Electron2.BaseApp",
|
||||||
|
"baseVersion": "25.08",
|
||||||
|
"finishArgs": [
|
||||||
|
"--socket=wayland",
|
||||||
|
"--socket=x11",
|
||||||
|
"--share=ipc",
|
||||||
|
"--share=network",
|
||||||
|
"--device=dri",
|
||||||
|
"--filesystem=home",
|
||||||
|
"--talk-name=org.freedesktop.Notifications"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
|
|||||||
Reference in New Issue
Block a user