summaryrefslogtreecommitdiff
path: root/CHANGELOG.md
blob: 18cc4131b224d56fb70b14b6b842e36cfe8f066d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Changelog

## 0.1.0 — 2026-02-10

Initial release.

Witryna is a minimalist Git-based static site deployment orchestrator.
It listens for webhook triggers, pulls Git repositories, runs
containerized build commands, and publishes static assets via atomic
symlink switching.

### Features

- **HTTP webhook server** (axum) with bearer token auth, rate limiting,
  and JSON error responses
- **Git integration**: clone, fetch, shallow/full depth, automatic
  submodule initialization, LFS support
- **Containerized builds** via Podman or Docker with security hardening
  (`--cap-drop=ALL`, `--network=none` default, resource limits)
- **Atomic publishing** via timestamped directories and symlink switching
- **Post-deploy hooks** with environment variables (`WITRYNA_SITE`,
  `WITRYNA_BUILD_DIR`, `WITRYNA_PUBLIC_DIR`, `WITRYNA_BUILD_TIMESTAMP`)
- **SIGHUP hot-reload** for adding/removing/reconfiguring sites without
  restart
- **Periodic polling** with configurable intervals and new-commit
  detection
- **Build queue** (depth-1, latest-wins) for concurrent webhook requests
- **Per-site environment variables** passed to builds and hooks
- **Build config overrides** in `witryna.toml` (image, command, public)
- **Container working directory** (`container_workdir`) for monorepo
  support
- **Cache volumes** for persistent build caches across deploys
- **Old build cleanup** with configurable retention
  (`max_builds_to_keep`)
- **Build and git timeouts** with configurable durations

### CLI

- `witryna serve` — start the deployment server
- `witryna validate` — validate config and print summary
- `witryna run <site>` — one-off synchronous build with `--verbose`
- `witryna status` — deployment status with `--json` and `--site`

### Packaging

- Debian/Ubuntu `.deb` and Fedora/RHEL `.rpm` packages with systemd
  service, man pages, and example configurations
- Automatic container runtime detection in postinst (Docker group +
  systemd override, or Podman subuids + lingering + override)
- Static binary tarball for manual installs
- Example reverse proxy configs for Caddy and nginx