From 80ae42088fe3aa261ee0dad9fda18a131091f597 Mon Sep 17 00:00:00 2001 From: max Date: Fri, 4 Sep 2026 23:25:32 +0200 Subject: [PATCH] ci: add consolidated release.yml combining Linux and Windows release jobs --- .gitea/workflows/release.yml | 115 +++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 .gitea/workflows/release.yml diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..cb8eb80 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,115 @@ +name: Release Binaries & Installers + +on: + push: + tags: + - 'v*' + workflow_dispatch: + inputs: + tag: + description: 'Release tag to publish assets to (default: v2.0.0)' + required: false + default: 'v2.0.0' + +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