Test CI
Some checks failed
Build / build-backend (push) Failing after 4s
Build / build-web (push) Failing after 11s
Build / release (push) Has been skipped

This commit is contained in:
2026-04-22 11:39:25 +02:00
parent 3d5ba249a3
commit 0c673ab5f1
3 changed files with 84 additions and 6 deletions

View File

@@ -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 }}
GITHUB_TOKEN: ${{ secrets.GITEATOKEN }}

2
backend/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
__pycache__/
venv/

26
backend/main.py Normal file
View File

@@ -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}