ci: add Forgejo Actions workflow for lint, test, and sample reports artifact
Some checks failed
CI / Lint and test (py3.10) (push) Failing after 40s
CI / Lint and test (py3.11) (push) Failing after 8s
CI / Lint and test (py3.12) (push) Failing after 8s
CI / Build sample reports artifact (push) Has been skipped

This commit is contained in:
ngxstat-bot 2025-08-16 04:57:20 -05:00
commit 91f87689d0

92
.forgejo/workflows/ci.yml Normal file
View file

@ -0,0 +1,92 @@
name: CI
on:
push:
pull_request:
workflow_dispatch:
jobs:
lint-and-test:
name: Lint and test (py${{ matrix.python }})
# Adjust this label to match your Forgejo runner
runs-on: docker
container:
image: python:${{ matrix.python }}-bookworm
strategy:
fail-fast: false
matrix:
python: ["3.10", "3.11", "3.12"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python (inside container)
run: |
python -m pip install --upgrade pip
pip --version
- name: Install dependencies
run: |
pip install -r requirements.txt
pip install pytest
- name: Format check (black)
run: black --check .
- name: Lint (flake8)
run: flake8 .
- name: Run tests (pytest)
env:
PYTHONDONTWRITEBYTECODE: "1"
run: pytest -q
build-reports:
name: Build sample reports artifact
needs: lint-and-test
runs-on: docker
container:
image: python:3.11-bookworm
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Seed minimal DB and generate reports
run: |
python - <<'PY'
import sqlite3, pathlib
db = pathlib.Path('database/ngxstat.db')
db.parent.mkdir(parents=True, exist_ok=True)
conn = sqlite3.connect(db)
cur = conn.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS logs (
id INTEGER PRIMARY KEY,
ip TEXT,
host TEXT,
time TEXT,
request TEXT,
status INTEGER,
bytes_sent INTEGER,
referer TEXT,
user_agent TEXT,
cache_status TEXT
)''')
cur.execute("INSERT INTO logs (ip, host, time, request, status, bytes_sent, referer, user_agent, cache_status) VALUES ('127.0.0.1','example.com','2024-01-01 10:00:00','GET / HTTP/1.1',200,100,'-','curl','MISS')")
cur.execute("INSERT INTO logs (ip, host, time, request, status, bytes_sent, referer, user_agent, cache_status) VALUES ('127.0.0.1','example.com','2024-01-01 10:05:00','GET /about HTTP/1.1',200,100,'-','curl','MISS')")
conn.commit(); conn.close()
PY
python scripts/generate_reports.py global
python scripts/generate_reports.py hourly
python scripts/generate_reports.py index
- name: Upload reports artifact
uses: actions/upload-artifact@v4
with:
name: ngxstat-reports
path: output/