Files
tg-ws-proxy-docker/.github/workflows/build.yml
2026-03-18 17:33:38 +03:00

213 lines
5.4 KiB
YAML

name: Build & Release
on:
workflow_dispatch:
inputs:
make_release:
description: 'Create Github Release?'
type: boolean
required: true
default: false
version:
description: "Release version tag (e.g. v1.0.0)"
required: false
default: "v1.0.0"
permissions:
contents: write
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
- name: Install dependencies
run: pip install -r requirements.txt
- name: Install pyinstaller
run: pip install "pyinstaller==6.13.0"
- name: Build EXE with PyInstaller
run: pyinstaller packaging/windows.spec --noconfirm
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: TgWsProxy
path: |
dist/TgWsProxy.exe
build-win7:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python 3.8 (last version supporting Win7)
uses: actions/setup-python@v5
with:
python-version: "3.8"
cache: "pip"
- name: Install dependencies (Win7-compatible)
run: pip install -r requirements-win7.txt
- name: Install pyinstaller
run: pip install "pyinstaller==5.13.2"
- name: Build EXE with PyInstaller (Win7)
run: pyinstaller packaging/windows.spec --noconfirm
- name: Rename artifact
run: mv dist/TgWsProxy.exe dist/TgWsProxy-win7.exe
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: TgWsProxy-win7
path: dist/TgWsProxy-win7.exe
build-macos:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
- name: Install dependencies
run: pip install -r requirements-macos.txt
- name: Install pyinstaller
run: pip install pyinstaller
- name: Create macOS icon from ICO
run: |
chmod +x packaging/create_icon.sh
packaging/create_icon.sh
- name: Build app with PyInstaller
run: pyinstaller packaging/macos.spec --noconfirm
- name: Upload app bundle
uses: actions/upload-artifact@v4
with:
name: TgWsProxy-app-arm64
path: "dist/TG WS Proxy.app"
build-macos-intel:
runs-on: macos-15-intel
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
- name: Install dependencies
run: pip install -r requirements-macos.txt
- name: Install pyinstaller
run: pip install pyinstaller
- name: Create macOS icon from ICO
run: |
chmod +x packaging/create_icon.sh
packaging/create_icon.sh
- name: Build app with PyInstaller
run: pyinstaller packaging/macos.spec --noconfirm
- name: Upload app bundle
uses: actions/upload-artifact@v4
with:
name: TgWsProxy-app-x86_64
path: "dist/TG WS Proxy.app"
build-macos-universal:
needs: [build-macos, build-macos-intel]
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download arm64 app
uses: actions/download-artifact@v4
with:
name: TgWsProxy-app-arm64
path: "dist/arm64/TG WS Proxy.app"
- name: Download x86_64 app
uses: actions/download-artifact@v4
with:
name: TgWsProxy-app-x86_64
path: "dist/x86_64/TG WS Proxy.app"
- name: Merge into universal2 app and create DMG
run: |
chmod +x packaging/merge_universal2.sh
packaging/merge_universal2.sh \
"dist/arm64/TG WS Proxy.app" \
"dist/x86_64/TG WS Proxy.app" \
"dist/TG WS Proxy.app"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: TgWsProxy-macOS
path: dist/TgWsProxy.dmg
release:
needs: [build, build-win7, build-macos-universal]
runs-on: ubuntu-latest
if: ${{ github.event.inputs.make_release == 'true' }}
steps:
- name: Download main build
uses: actions/download-artifact@v4
with:
name: TgWsProxy
path: dist
- name: Download Win7 build
uses: actions/download-artifact@v4
with:
name: TgWsProxy-win7
path: dist
- name: Download macOS build
uses: actions/download-artifact@v4
with:
name: TgWsProxy-macOS
path: dist
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.event.inputs.version }}
name: "TG WS Proxy ${{ github.event.inputs.version }}"
body: |
## TG WS Proxy ${{ github.event.inputs.version }}
files: |
dist/TgWsProxy.exe
dist/TgWsProxy-win7.exe
dist/TgWsProxy.dmg
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}