Files
systemic-game-design-course/deploy/README.md
T

39 lines
1.9 KiB
Markdown

# Deploying the course site
The site (`site/`, Astro Starlight) is built into static files and served by
`nginx:alpine`. It is meant to run behind a `jwilder/nginx-proxy` container with
`acme-companion` (Let's Encrypt), which routes by the `VIRTUAL_HOST` variable.
## Deploy
```sh
git clone https://gitea.lucaswinther.info/lucasw89/systemic-game-design-course.git
cd systemic-game-design-course/deploy
cp .env.example .env # set COURSE_HOST (and PROXY_NETWORK if yours differs)
docker compose up -d --build
```
- `COURSE_HOST` is the public hostname; point its DNS record at the server first.
It is used as the site URL at build time, as `VIRTUAL_HOST`, and as `LETSENCRYPT_HOST`.
- The build fails if `COURSE_HOST` is unset, so the placeholder URL never ships.
- The container joins the external Docker network `${PROXY_NETWORK:-nginx-proxy}`;
it must be the network your nginx-proxy container is on.
- To update: `git pull && docker compose up -d --build`.
Manual build: `docker build -f deploy/Dockerfile --build-arg COURSE_HOST=course.example.com .`
(run from the repository root).
## CI
`.gitea/workflows/ci.yml` runs on Gitea Actions (needs a runner with the `ubuntu-latest` label):
| Job | Runs |
| --- | --- |
| `tools` | `npm run test:tools`, `npm run check` (sync-check), `npm run test:site` |
| `verify-references` | `node tools/verify-references.mjs`: every module's reference, Rust and TS, with cumulative tests (needs network for `npm install`; Rust pinned to 1.85.1) |
| `coupling-audit` | `tools/coupling-audit.mjs` on every `course/*/reference/*` |
| `site` | `npm --prefix site ci && npm --prefix site run build` with a dummy `COURSE_HOST` |
| `naive-engine` | Module 0's engine: `cargo test`, `npm test`, `npm run typecheck`. The whirlwind-order test is expected to fail and is marked `should_panic` / `test.fails`, so the suite passes |
There is no clippy step.