116 lines
4.1 KiB
YAML
116 lines
4.1 KiB
YAML
name: Release Binaries & Installers
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag:
|
|
description: 'Release tag to publish assets to (default: v2.0.1)'
|
|
required: false
|
|
default: 'v2.0.1'
|
|
|
|
jobs:
|
|
release-linux:
|
|
name: Build & Release Linux Binaries
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Python and Build Dependencies
|
|
run: |
|
|
if command -v apt-get >/dev/null 2>&1; then
|
|
apt-get update -y
|
|
apt-get install -y python3 python3-pip python3-venv binutils zip
|
|
fi
|
|
python3 -m pip install --upgrade pip --break-system-packages || python3 -m pip install --upgrade pip || true
|
|
pip3 install pyinstaller -r compilation/requirements.txt --break-system-packages || pip3 install pyinstaller -r compilation/requirements.txt
|
|
|
|
- name: Compile Standalone Linux Binaries
|
|
run: |
|
|
python3 compilation/package_dist.py --target linux
|
|
|
|
- name: Publish Linux Release Assets
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.TAG_TOKEN || github.token }}
|
|
GITEA_SERVER_URL: ${{ github.server_url }}
|
|
GITEA_REPOSITORY: ${{ github.repository }}
|
|
GITEA_REF_NAME: ${{ inputs.tag || github.event.release.tag_name || github.ref_name }}
|
|
run: |
|
|
python3 compilation/upload_release.py --skip-build
|
|
|
|
release-windows:
|
|
name: Build & Release Windows Binaries & Installers
|
|
# Note: Requires a registered Gitea Act Runner with label 'windows-latest'
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
continue-on-error: true
|
|
|
|
- name: Install Dependencies
|
|
shell: powershell
|
|
run: |
|
|
$py = "python"
|
|
if (-not (Get-Command "python" -ErrorAction SilentlyContinue)) {
|
|
if (Get-Command "py" -ErrorAction SilentlyContinue) {
|
|
$py = "py -3.12"
|
|
}
|
|
}
|
|
& $py -m pip install --upgrade pip
|
|
& $py -m pip install pyinstaller cryptography -r compilation/requirements.txt
|
|
|
|
- name: Compile Standalone Windows Binaries
|
|
shell: powershell
|
|
run: |
|
|
$py = "python"
|
|
if (-not (Get-Command "python" -ErrorAction SilentlyContinue)) {
|
|
if (Get-Command "py" -ErrorAction SilentlyContinue) {
|
|
$py = "py -3.12"
|
|
}
|
|
}
|
|
& $py compilation/package_dist.py --target windows
|
|
|
|
- name: Compile Inno Setup Installers
|
|
shell: powershell
|
|
run: |
|
|
$iscc = $null
|
|
if (Test-Path "C:\Program Files (x86)\Inno Setup 6\ISCC.exe") {
|
|
$iscc = "C:\Program Files (x86)\Inno Setup 6\ISCC.exe"
|
|
} elseif (Test-Path "C:\Program Files\Inno Setup 6\ISCC.exe") {
|
|
$iscc = "C:\Program Files\Inno Setup 6\ISCC.exe"
|
|
} elseif (Get-Command "ISCC.exe" -ErrorAction SilentlyContinue) {
|
|
$iscc = "ISCC.exe"
|
|
}
|
|
|
|
if ($iscc) {
|
|
Write-Host "[*] Compiling Windows Inno Setup installers using $iscc..."
|
|
& $iscc compilation/installer_client.iss
|
|
& $iscc compilation/installer_server.iss
|
|
} else {
|
|
Write-Host "[!] Inno Setup compiler (ISCC.exe) not found on runner host. Skipping installer compilation."
|
|
}
|
|
|
|
- name: Publish Windows Release Assets
|
|
shell: powershell
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.TAG_TOKEN || github.token }}
|
|
GITEA_SERVER_URL: ${{ github.server_url }}
|
|
GITEA_REPOSITORY: ${{ github.repository }}
|
|
GITEA_REF_NAME: ${{ inputs.tag || github.event.release.tag_name || github.ref_name }}
|
|
run: |
|
|
$py = "python"
|
|
if (-not (Get-Command "python" -ErrorAction SilentlyContinue)) {
|
|
if (Get-Command "py" -ErrorAction SilentlyContinue) {
|
|
$py = "py -3.12"
|
|
}
|
|
}
|
|
& $py compilation/upload_release.py --skip-build
|