88 lines
3.4 KiB
Markdown
88 lines
3.4 KiB
Markdown
# dossiers-ngi — cascade landing + hourly branch-status
|
|
|
|
SoT for the blank cascade landing on **dossiers.ngi.hacktivism.ch**
|
|
(path roots only; no dossiers.2 / dossiers.3 ownership here).
|
|
|
|
| Path | Role |
|
|
|------|------|
|
|
| `sites/dossiers.ngi.hacktivism.ch/` | Landing HTML (EN, ASCII ladder) |
|
|
| `scripts/dossiers-ngi/branch-status-hourly.py` | Read tips from tdpd checkout → `branch-status.json` |
|
|
| `configs/systemd/user/dossiers-ngi-branch-status.{timer,service}` | Hourly oneshot on koopa |
|
|
|
|
## Env
|
|
|
|
| Var | Default | Meaning |
|
|
|-----|---------|---------|
|
|
| `TDPD_ROOT` | `$HOME/git/src/ngi/tech-dossier-project-data` | tech-dossier-project-data checkout for tip SHAs |
|
|
| `OUT` | `sites/dossiers.ngi.hacktivism.ch/branch-status.json` under kal | write path for JSON (live www on koopa) |
|
|
| `ADMIN_LOG` | (script derives from `__file__`) | koopa-admin-log root |
|
|
|
|
On koopa the clone often lives at `%h/src/koopa/koopa-admin-log`; set
|
|
`TDPD_ROOT` and `OUT` in `~/.config/dossiers-ngi/branch-status.env` when the
|
|
tdpd path or live www path differs from the laptop defaults.
|
|
|
|
## Manual run
|
|
|
|
```bash
|
|
python3 scripts/dossiers-ngi/branch-status-hourly.py
|
|
# → sites/dossiers.ngi.hacktivism.ch/branch-status.json
|
|
```
|
|
|
|
## Deploy landing (Freigabe)
|
|
|
|
```text
|
|
hernani@koopa:/var/www/monitoring-sites/dossiers.ngi.hacktivism.ch/
|
|
```
|
|
|
|
rsync from `sites/dossiers.ngi.hacktivism.ch/` — Freigabe this session required.
|
|
Hourly JSON can sit next to the HTML once the timer is installed on koopa
|
|
(Freigabe for host mutation).
|
|
|
|
## Ownership
|
|
|
|
Hourly builder belongs in **kal** (this tree). Do **not** put
|
|
`scripts/branch-status-hourly.py` back into tdpd.
|
|
|
|
## Sticky cascade bar
|
|
|
|
Stock Caddy `templates` renders `{% include "_cascade/bar.html" . %}` on each
|
|
HTML page. The include path has no leading slash. The dot passes the request,
|
|
so `.Req.URL.Path` marks the active link with `class="is-active"` and
|
|
`aria-current="page"`. Delimiters are `{%` `%}`, so a later `{{ }}` in real
|
|
dossier HTML stays literal.
|
|
|
|
The bar lists cascade `/` plus the five branch paths. Seeded tips match
|
|
`branch-status.json`. `/_cascade/bar.js` refreshes `[data-tip]` from that JSON
|
|
(`cache: no-store`). CSS is `/_cascade/bar.css` (`position: sticky`).
|
|
|
|
Enable templates before rsync. A page without the include does not grow the
|
|
bar. `{%` without the templates directive is shown as raw text.
|
|
|
|
Templates apply is **host-local on koopa** (`~/bin/apply-dossiers-ngi-templates.sh`),
|
|
not tracked in this repo. It edits `~/koopa-caddy/Caddyfile` only (this host;
|
|
keeps `header Alt-Svc "clear"` and any `basic_auth`; leaves `.2` / `.3`
|
|
untouched). Then reload with the usual home→`/etc` helper:
|
|
|
|
```bash
|
|
bash ~/bin/apply-dossiers-ngi-templates.sh
|
|
sudo ~/bin/caddy-apply
|
|
```
|
|
|
|
The stanza body for hand-check / re-seed lives in
|
|
`scripts/dossiers-ngi/caddy-dossiers-ngi.snippet`.
|
|
`scripts/caddy/caddy-apply.sh --snippet` leaves an existing block unchanged.
|
|
Leave `scripts/caddy/apply-goa-wdGet-full-replace.sh` and
|
|
`scripts/caddy/apply-dossiers-ngi-basicauth.sh` unused. No response-body
|
|
replace plugin.
|
|
|
|
After validate and reload succeed, rsync from the laptop (Freigabe):
|
|
|
|
```bash
|
|
rsync -avz --delete --exclude .DS_Store \
|
|
"$HOME/git/admin-logs/local/koopa-admin-log/sites/dossiers.ngi.hacktivism.ch/" \
|
|
hernani@koopa:/var/www/monitoring-sites/dossiers.ngi.hacktivism.ch/
|
|
```
|
|
|
|
`--delete` removes `_cascade/` on the server when the source tree is an older
|
|
copy. The bar does not finish the dossier site. This section does not install
|
|
the hourly timer.
|