From 6cf47d6d34e28666a647337889933d7ab05b8aae Mon Sep 17 00:00:00 2001 From: Daniel Dybing Date: Mon, 3 Aug 2026 23:49:04 +0200 Subject: [PATCH] feat(ci): unify build and add automatic releases on tag push --- .gitea/workflows/build-and-release.yaml | 115 ++++++++++++++++++++++++ .gitea/workflows/build-linux.yaml | 49 ---------- .gitea/workflows/build-windows.yaml | 33 ------- build_app.py | 8 +- 4 files changed, 120 insertions(+), 85 deletions(-) create mode 100644 .gitea/workflows/build-and-release.yaml delete mode 100644 .gitea/workflows/build-linux.yaml delete mode 100644 .gitea/workflows/build-windows.yaml diff --git a/.gitea/workflows/build-and-release.yaml b/.gitea/workflows/build-and-release.yaml new file mode 100644 index 0000000..36fbcaf --- /dev/null +++ b/.gitea/workflows/build-and-release.yaml @@ -0,0 +1,115 @@ +name: Build and Release + +on: + push: + branches: [ "main", "dev" ] + tags: [ "v*" ] + pull_request: + branches: [ "main", "dev" ] + +permissions: + contents: write + +jobs: + build-linux: + name: Build Linux + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Install System Dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + libxkbcommon-x11-0 \ + libxcb-icccm4 \ + libxcb-image0 \ + libxcb-keysyms1 \ + libxcb-randr0 \ + libxcb-render-util0 \ + libxcb-xinerama0 \ + libxcb-xinput0 \ + libxcb-xfixes0 \ + libxcb-shape0 \ + libgl1 \ + libegl1 \ + libdbus-1-3 \ + libx11-xcb1 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Build Executable + run: | + python build_app.py + + - name: Upload Artifact + uses: actions/upload-artifact@v3 + with: + name: TeletextEditor-Linux + path: dist/TeletextEditor_Linux + + build-windows: + name: Build Windows + runs-on: ubuntu-latest + container: + image: tobix/pywine:3.10 + steps: + - name: Install Node.js + run: | + apt-get clean + apt-get update + apt-get install -y --fix-missing nodejs npm + + - name: Checkout + uses: actions/checkout@v3 + + - name: Install Dependencies + run: | + wine python -m pip install --upgrade pip + wine pip install -r requirements.txt + + - name: Build Executable + run: | + wine python build_app.py + + - name: Upload Artifact + uses: actions/upload-artifact@v3 + with: + name: TeletextEditor-Windows + path: dist/TeletextEditor_Windows.exe + + release: + name: Create Release + needs: [build-linux, build-windows] + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/v') + steps: + - name: Download Linux Artifact + uses: actions/download-artifact@v3 + with: + name: TeletextEditor-Linux + path: dist + + - name: Download Windows Artifact + uses: actions/download-artifact@v3 + with: + name: TeletextEditor-Windows + path: dist + + - name: Release + uses: softprops/action-gh-release@v1 + with: + files: | + dist/TeletextEditor_Linux + dist/TeletextEditor_Windows.exe + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitea/workflows/build-linux.yaml b/.gitea/workflows/build-linux.yaml deleted file mode 100644 index a3ad917..0000000 --- a/.gitea/workflows/build-linux.yaml +++ /dev/null @@ -1,49 +0,0 @@ -name: Build Linux -on: [push, pull_request] - -jobs: - build: - name: Build Linux - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Install System Dependencies - run: | - sudo apt-get update - sudo apt-get install -y \ - libxkbcommon-x11-0 \ - libxcb-icccm4 \ - libxcb-image0 \ - libxcb-keysyms1 \ - libxcb-randr0 \ - libxcb-render-util0 \ - libxcb-xinerama0 \ - libxcb-xinput0 \ - libxcb-xfixes0 \ - libxcb-shape0 \ - libgl1 \ - libegl1 \ - libdbus-1-3 \ - libx11-xcb1 - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - - name: Install Dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - - - name: Build Executable - run: | - pyinstaller --onefile --windowed --name TeletextEditor_Linux --paths src --add-data "app_icon.png:." src/main.py - - - name: Upload Artifact - uses: actions/upload-artifact@v3 - with: - name: TeletextEditor-Linux - path: dist/TeletextEditor_Linux \ No newline at end of file diff --git a/.gitea/workflows/build-windows.yaml b/.gitea/workflows/build-windows.yaml deleted file mode 100644 index 02139e7..0000000 --- a/.gitea/workflows/build-windows.yaml +++ /dev/null @@ -1,33 +0,0 @@ -name: Build Windows -on: [push, pull_request] - -jobs: - build: - name: Build Windows - runs-on: ubuntu-latest - container: - image: tobix/pywine:3.10 - steps: - - name: Install Node.js - run: | - apt-get clean - apt-get update - apt-get install -y --fix-missing nodejs npm - - - name: Checkout - uses: actions/checkout@v3 - - - name: Install Dependencies - run: | - wine python -m pip install --upgrade pip - wine pip install -r requirements.txt - - - name: Build Executable - run: | - wine pyinstaller --onefile --windowed --hidden-import=pkgutil --hidden-import=PyQt6.sip --collect-all PyQt6 --name TeletextEditor_Windows.exe --paths src --add-data "app_icon.png;." --icon=app_icon.ico src/main.py - - - name: Upload Artifact - uses: actions/upload-artifact@v3 - with: - name: TeletextEditor-Windows - path: dist/TeletextEditor_Windows.exe diff --git a/build_app.py b/build_app.py index f8fd7a2..966d205 100644 --- a/build_app.py +++ b/build_app.py @@ -11,9 +11,11 @@ def clean_build_dirs(): print(f"Cleaning {d}...") shutil.rmtree(d) - spec_file = "TeletextEditor_Linux.spec" if platform.system() == "Linux" else "TeletextEditor_Windows.spec" - if os.path.exists(spec_file): - os.remove(spec_file) + for f in os.listdir("."): + if f.endswith(".spec"): + print(f"Removing {f}...") + os.remove(f) + def build(): system = platform.system()