30 lines
1.9 KiB
Markdown
30 lines
1.9 KiB
Markdown
# Release v0.1.0 — first tagged deploy, method
|
|
|
|
> **The record lives in the operator's infra repo** (`services/flybrain/release-v0.1.0.md`), verbatim and dated.
|
|
> This file keeps only what the run established about the procedure.
|
|
|
|
The first tagged release deployed to the release container: annotated tag, built off that
|
|
tag, deployed from a checkout at that tag, CPU-only (`GPU=0`, `FLY_ENCODER=x264`).
|
|
|
|
**The run deployed and verified the release. It did not prove the container holds real
|
|
time** — and that is the lesson, not a footnote. The box held real time while the encoder
|
|
was feeding only the container's own MediaMTX, and stopped holding it the moment
|
|
`flypush` was also remuxing to Twitch: the realtime factor fell just below 1 and
|
|
`fly_lag_seconds` grew and **never came back** (it is an accumulated pacing shortfall —
|
|
the loop never skips a frame, so it only ever grows). Do not read "ALL CHECKS PASSED" as
|
|
"ready to leave alone".
|
|
|
|
What the recovery established, and what the scripts now encode:
|
|
|
|
- `RAYON_THREADS` and `X264_PRESET` are **load-bearing** and belong in the env file,
|
|
not in a hand-edit on the container: `05-deploy.sh` regenerates `/etc/fly/fly.env`
|
|
and the `AllowedCPUs=` drop-ins from the env file on **every** run, so a hand-edited
|
|
container is silently reverted by the next tagged deploy, mid-stream.
|
|
- The encoder needs its own cpu group, separate from the page: Chromium's compositor
|
|
starves when it shares a physical core with x264.
|
|
- `ENV_LABEL` is derived from the env file's basename rather than the path as typed,
|
|
because the same file reached by two spellings made `converge_file` see a content
|
|
change and re-push every generated file for nothing.
|
|
- A release deploy runs from a checkout staged on the host; unpacking one as root leaves
|
|
it owned by the archive's uid, and then every `git` call fails with a dubious-ownership
|
|
refusal that `require_release_tag` used to report as "not at an annotated tag".
|