Pruebas, Docker con cron y CI/CD en Forgejo #2

Merged
hectorviov merged 5 commits from ci/docker-tests-deploy into main 2026-09-17 00:00:45 +00:00
Owner

Resumen

  • Pruebas (tests/, unittest, datos ficticios): load_env, auth JWT, paginación con next interno, send_mail, detección y avisos del monitor, build_shifts, week_start y el reporte completo con una API falsa.
  • Docker: python:3.12-alpine + tzdata, etapa test y crond con horario en hora de México (crontab).
  • compose.yaml: volumen /mnt/user/appdata/biotime/data. .env y .monitor_state.json se leen de DATA_DIR; sin esa variable todo sigue igual en local.
  • CI/CD (.forgejo/workflows/ci.yml): pruebas en cada PR a main; pruebas + docker compose -p biotime up -d --build en cada push a main.

Antes de hacer merge

  • Runner en Unraid con etiqueta docker que monta el socket de Docker
  • .env creado en la carpeta de la variable de Actions BIOTIME_DATA_DIR
  • Protección de main: sin push directo y verificación requerida CI / test*

Pruebas

  • python3 -m unittest → 25 OK
  • docker build --target test . → 25 OK en Python 3.12
  • Contenedor probado: crond ejecuta con TZ=America/Mexico_City y la salida aparece en docker logs

🤖 Generated with Claude Code

## Resumen - **Pruebas** (`tests/`, `unittest`, datos ficticios): `load_env`, auth JWT, paginación con `next` interno, `send_mail`, detección y avisos del monitor, `build_shifts`, `week_start` y el reporte completo con una API falsa. - **Docker**: `python:3.12-alpine` + `tzdata`, etapa `test` y `crond` con horario en hora de México (`crontab`). - **`compose.yaml`**: volumen `/mnt/user/appdata/biotime` → `/data`. `.env` y `.monitor_state.json` se leen de `DATA_DIR`; sin esa variable todo sigue igual en local. - **CI/CD** (`.forgejo/workflows/ci.yml`): pruebas en cada PR a `main`; pruebas + `docker compose -p biotime up -d --build` en cada push a `main`. ## Antes de hacer merge - [x] Runner en Unraid con etiqueta `docker` que monta el socket de Docker - [x] `.env` creado en la carpeta de la variable de Actions `BIOTIME_DATA_DIR` - [ ] Protección de `main`: sin push directo y verificación requerida `CI / test*` ## Pruebas - `python3 -m unittest` → 25 OK - `docker build --target test .` → 25 OK en Python 3.12 - Contenedor probado: crond ejecuta con `TZ=America/Mexico_City` y la salida aparece en `docker logs` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Agregar pruebas, Docker con cron y CI/CD en Forgejo
Some checks failed
CI / test (pull_request) Failing after 1s
CI / deploy (pull_request) Has been skipped
a44f17ebff
- Pruebas con unittest y datos ficticios para biotime, monitor y el reporte semanal.
- Dockerfile (python:3.12-alpine + tzdata) con etapa de pruebas y crond.
- compose.yaml con volumen /data para .env y el estado del monitor (DATA_DIR).
- Workflow: pruebas en cada PR a main; pruebas y deploy en cada push a main.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
CI: no montar el socket de Docker, ya lo monta el runner
All checks were successful
CI / test (pull_request) Successful in 10s
CI / deploy (pull_request) Has been skipped
42fc79b636
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Deploy: tomar la carpeta de datos de la variable BIOTIME_DATA_DIR
All checks were successful
CI / test (pull_request) Successful in 6s
CI / deploy (pull_request) Has been skipped
5b677bbbaf
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
CLAUDE.md: unir la regla de PR con la sección de flujo de Git
All checks were successful
CI / test (pull_request) Successful in 5s
CI / deploy (pull_request) Has been skipped
7da9096358
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
hectorviov/biotime-scripts!2
No description provided.