mirror of
https://github.com/evennia/evennia.git
synced 2026-08-18 03:05:44 +00:00
2.2 KiB
2.2 KiB
CI/CD
Workflows (.github/workflows/)
Test Suite (github_action_test_suite.yml)
Triggers on push/PR to main or develop (skips docs-only changes).
Matrix: Python 3.12, 3.13, 3.14 across three database jobs:
| Job | DB | Timeout | Notes |
|---|---|---|---|
| test-sqlite | SQLite | 30m | Coverage on Python 3.12 only |
| test-mysql | MySQL 8.0 | 35m | utf8mb3 charset, --keepdb --parallel |
| test-postgresql | PostgreSQL 14 | 60m | Sequential, no --keepdb (stale DB issues) |
Deploy step (main branch only, after all tests pass): builds and pushes Docker image evennia/evennia:latest to DockerHub.
Doc Build (github_action_build_docs.yml)
Triggers on push/PR to main/develop when docs/ or evennia/contrib/ changes. Builds with Sphinx via make release in docs/. Requires a full game dir init + migrations before building.
Other Workflows
codeql-analysis.yml— Security scanning (JS + Python), weekly + on push/PRgithub_action_issue_to_project.yml— Auto-adds issues to GitHub Projects
Custom Actions (.github/actions/)
setup-database/— Waits for DB readiness, creates MySQL database/users, grants privileges. SQLite needs no setup.run-tests/— Sets up Python, installs Evennia, inits test game dir, copies DB-specific settings from.github/workflows/{db}_settings.py, runs migrations, then tests.
Database Settings (.github/workflows/)
Each DB type has a settings file copied into the test game dir:
sqlite3_settings.py— Minimal, uses Evennia defaultsmysql_settings.py— utf8mb3 charset,STRICT_TRANS_TABLES,innodb_strict_modepostgresql_settings.py— Aggressive timeouts for CI:lock_timeout=30s,statement_timeout=5m
Docker (Dockerfile)
- Base:
python:3.13-alpine - Build arg
EVENNIA_INSTALL_MODE:editable(default, mounts source) orpypi - Ports: 4000 (telnet), 4001 (web), 4002 (websocket)
- Volume:
/usr/src/game - Entrypoint:
bin/unix/evennia-docker-start.sh
Secrets
COVERALLS_REPO_TOKEN— Coverage reportingDOCKERHUB_USERNAME/DOCKERHUB_TOKEN— Docker publishingEVENNIA_TICKET_TO_PROJECT— Issue automation