From 0c673ab5f153bdb23c89e171a602a842475d7c24 Mon Sep 17 00:00:00 2001 From: BinarySandia04 Date: Wed, 22 Apr 2026 11:39:25 +0200 Subject: [PATCH] Test CI --- .gitea/workflows/build.yml | 62 ++++++++++++++++++++++++++++++++++---- backend/.gitignore | 2 ++ backend/main.py | 26 ++++++++++++++++ 3 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 backend/.gitignore create mode 100644 backend/main.py diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 67446f0..37af506 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -1,4 +1,4 @@ -name: Build Nuxt App +name: Build on: push: @@ -6,7 +6,7 @@ on: - master jobs: - build: + build-web: runs-on: docker defaults: @@ -43,12 +43,62 @@ jobs: cd dist_package zip -r ../quibot-web.zip . - # Create or update release and upload asset - - name: Upload Release + - name: Upload Web artifact + uses: actions/upload-artifact@v4 + with: + name: quibot-web + path: quibot-web/quibot-web.zip + + build-backend: + runs-on: docker + defaults: + run: + working-directory: backend + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + apt update + apt install -y zip + + - name: Create zip + run: | + zip -r backend.zip . + + - name: Upload Backend artifact + uses: actions/upload-artifact@v4 + with: + name: backend + path: backend/backend.zip + + + + release: + runs-on: docker + needs: [build-web, build-backend] + steps: + - name: Download Web Artifact + uses: actions/download-artifact@v4 + with: + name: quibot-web + path: dist + + - name: Download Backend Artifact + uses: actions/download-artifact@v4 + with: + name: backend + path: dist + + - name: Create Release uses: softprops/action-gh-release@v1 with: tag_name: latest name: Latest Build - files: quibot-web/quibot-web.zip + files: | + dist/quibot-web.zip + dist/backend.zip env: - GITHUB_TOKEN: ${{ secrets.GITEATOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITEATOKEN }} diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..0540009 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +venv/ \ No newline at end of file diff --git a/backend/main.py b/backend/main.py new file mode 100644 index 0000000..8b0d264 --- /dev/null +++ b/backend/main.py @@ -0,0 +1,26 @@ +from fastapi import FastAPI, HTTPException +import subprocess + +app = FastAPI() + +# Whitelist allowed actions (VERY important) +COMMANDS = { + "restart_nginx": ["sudo", "systemctl", "restart", "nginx"], + "uptime": ["uptime"], + "update": ["sudo", "apt", "update"] +} + +@app.post("/run") +def run_task(task: str, token: str): + # simple auth check (replace with real auth later) + if token != "MY_SECRET_TOKEN": + raise HTTPException(status_code=403, detail="Unauthorized") + + if task not in COMMANDS: + raise HTTPException(status_code=400, detail="Invalid task") + + try: + result = subprocess.check_output(COMMANDS[task], text=True) + return {"output": result} + except subprocess.CalledProcessError as e: + return {"error": e.output} \ No newline at end of file