mirror of
https://github.com/PR0M3TH3AN/VoxVera.git
synced 2026-10-27 09:40:40 +00:00
166 lines
5.5 KiB
YAML
166 lines
5.5 KiB
YAML
name: Build Standalone Binaries
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
name: Build for ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 60
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-22.04, windows-latest, macos-latest]
|
|
include:
|
|
- os: ubuntu-22.04
|
|
artifact_name: voxvera-linux-x86_64
|
|
- os: windows-latest
|
|
artifact_name: voxvera-windows.exe
|
|
- os: macos-latest
|
|
artifact_name: voxvera-macos-x86_64
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
pip install --upgrade setuptools pkg_resources || pip install --upgrade setuptools
|
|
pip install -r requirements.txt
|
|
pip install .
|
|
pip install pyinstaller pyinstaller-hooks-contrib
|
|
|
|
- name: Download Tor Binaries
|
|
shell: bash
|
|
run: |
|
|
chmod +x scripts/download_tor.sh
|
|
./scripts/download_tor.sh
|
|
|
|
- name: Build with PyInstaller
|
|
shell: bash
|
|
run: |
|
|
if [ "$RUNNER_OS" == "Windows" ]; then SEP=";"; else SEP=":"; fi
|
|
pyinstaller --onefile \
|
|
--collect-all pkg_resources \
|
|
--collect-all setuptools \
|
|
--hidden-import pkg_resources \
|
|
--hidden-import setuptools \
|
|
--hidden-import jaraco.text \
|
|
--hidden-import jaraco.functools \
|
|
--hidden-import jaraco.context \
|
|
--hidden-import more_itertools \
|
|
--hidden-import packaging \
|
|
--hidden-import platformdirs \
|
|
--collect-all onionshare_cli \
|
|
--collect-all flask_socketio \
|
|
--collect-all engineio \
|
|
--collect-all socketio \
|
|
--collect-all eventlet \
|
|
--collect-all gevent \
|
|
--add-data "voxvera/locales${SEP}voxvera/locales" \
|
|
--add-data "voxvera/src${SEP}voxvera/src" \
|
|
--add-data "voxvera/templates${SEP}voxvera/templates" \
|
|
--add-data "voxvera/resources/tor${SEP}voxvera/resources/tor" \
|
|
--add-data "requirements.txt${SEP}." \
|
|
--name "${{ matrix.artifact_name }}" \
|
|
voxvera/cli.py
|
|
|
|
- name: Validate built binary contract surface (Linux/macOS)
|
|
if: matrix.os != 'windows-latest'
|
|
shell: bash
|
|
run: |
|
|
./dist/${{ matrix.artifact_name }} platform-status --json
|
|
./dist/${{ matrix.artifact_name }} doctor --json
|
|
./dist/${{ matrix.artifact_name }} autostart status --json
|
|
|
|
- name: Validate built binary contract surface (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
shell: pwsh
|
|
run: |
|
|
& ".\dist\${{ matrix.artifact_name }}" platform-status --json
|
|
& ".\dist\${{ matrix.artifact_name }}" doctor --json
|
|
& ".\dist\${{ matrix.artifact_name }}" autostart status --json
|
|
|
|
- name: Build .deb (Linux)
|
|
if: matrix.os == 'ubuntu-22.04'
|
|
run: |
|
|
mkdir -p voxvera/resources/bin
|
|
cp dist/${{ matrix.artifact_name }} voxvera/resources/bin/voxvera-linux-x86_64
|
|
chmod +x packaging/build_deb.sh
|
|
./packaging/build_deb.sh dist/${{ matrix.artifact_name }}
|
|
|
|
- name: Build AppImage (Linux)
|
|
if: matrix.os == 'ubuntu-22.04'
|
|
run: |
|
|
mkdir -p voxvera/resources/bin
|
|
cp dist/${{ matrix.artifact_name }} voxvera/resources/bin/voxvera-linux-x86_64
|
|
chmod +x packaging/build_appimage.sh
|
|
./packaging/build_appimage.sh dist/${{ matrix.artifact_name }}
|
|
|
|
- name: Build Flatpak (Linux)
|
|
if: matrix.os == 'ubuntu-22.04'
|
|
run: |
|
|
mkdir -p voxvera/resources/bin
|
|
cp dist/${{ matrix.artifact_name }} voxvera/resources/bin/voxvera-linux-x86_64
|
|
sudo apt-get update
|
|
sudo apt-get install -y flatpak flatpak-builder
|
|
chmod +x packaging/build_flatpak.sh
|
|
./packaging/build_flatpak.sh dist/${{ matrix.artifact_name }} || echo "Flatpak build failed"
|
|
|
|
- name: Build .dmg (macOS)
|
|
if: matrix.os == 'macos-latest'
|
|
run: |
|
|
mkdir -p voxvera/resources/bin
|
|
cp dist/${{ matrix.artifact_name }} voxvera/resources/bin/voxvera-macos-x86_64
|
|
chmod +x packaging/build_dmg.sh
|
|
./packaging/build_dmg.sh dist/${{ matrix.artifact_name }}
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: binaries-${{ matrix.os }}
|
|
path: |
|
|
dist/${{ matrix.artifact_name }}
|
|
voxvera/resources/bin/*.deb
|
|
voxvera/resources/bin/*.dmg
|
|
voxvera/resources/bin/*.AppImage
|
|
voxvera/resources/bin/*.flatpak
|
|
|
|
publish:
|
|
name: Create GitHub Release
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Download all artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: artifacts
|
|
|
|
- name: Flatten artifacts for release
|
|
run: |
|
|
mkdir -p release_assets
|
|
find artifacts -type f -exec cp {} release_assets/ \;
|
|
ls -R release_assets/
|
|
|
|
- name: Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
files: |
|
|
release_assets/*
|
|
fail_on_unmatched_files: false
|
|
overwrite: true
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|