Skip to content
name: Build Launcher
on:
workflow_dispatch:
push:
tags:
- 'v*'
branches:
- launcher
jobs:
build:
strategy:
fail-fast: false
matrix:
board:
- os: ubuntu-latest
target: linux-x64
binary: fakturyfy-linux-x64
- os: windows-latest
target: win-x64
binary: fakturyfy-win-x64.exe
runs-on: ${{ matrix.board.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Build frontend
run: |
cd frontend
npm install
npm run build-only -- --outDir dist
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
cd backend
python -m pip install --no-cache-dir -r requirements.txt -r ../launcher/requirements.txt
- name: Create app structure
run: |
cp -r backend app
cp -r frontend/dist app/fakturyfy/app/templates
cp -r launcher/launcher.py app/launcher.py
mkdir dist
cp launcher/fakturyfy-setup.iss dist/fakturyfy-setup.iss
cp launcher/favicon.ico dist/favicon.ico
- name: Build the binary
run: |
cd app
pyinstaller --onefile --noconfirm --collect-all InvoiceGenerator launcher.py
mv dist/launcher* ../dist/${{ matrix.board.binary }}
- name: Compile .ISS to .EXE Installer on Windows
if: matrix.board.target == 'win-x64'
uses: Minionguyjpro/Inno-Setup-Action@v1.2.4
with:
path: dist/fakturyfy-setup.iss
options: /Ffakturyfy-setup-win-x64
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: fakturyfy-${{ matrix.board.target }}
path: fakturyfy-*