Document the Forgejo Actions CI setup in both READMEs

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
byrsapty 2026-07-22 21:36:59 +03:00
parent 32ccb22c88
commit 0da7aa5a14
2 changed files with 51 additions and 0 deletions

View file

@ -480,6 +480,31 @@ The scheduler checks every 60s, so the Discord message can take up to a
minute to arrive. Check Graylog's Alerts page and the configured Discord
channel.
## CI/CD via Forgejo Actions
This project's Forgejo repo (`git.zotac.keenetic.link/zotac/graylog-deploy`)
has a manually-triggered deploy workflow: `.forgejo/workflows/deploy.yml`.
Running it (Actions tab → Deploy Graylog config → Run workflow) clones the
repo fresh and re-runs `install-graylog.sh` - the same idempotent script
described throughout this README, just automated instead of scp'd by hand.
- **Trigger is manual on purpose** (`workflow_dispatch` only, no
`on: push`) - this repo drives a production monitoring system, so a
human reviews the diff and clicks "Run workflow" rather than every push
silently redeploying.
- **The runner lives inside the Graylog container itself** (VMID 200,
`self-hosted:host` label, installed at `/usr/local/bin/forgejo-runner`,
running as a systemd service). No new SSH keys or cross-host access were
needed - the workflow just clones the repo into `/tmp/graylog-deploy-ci`
and runs the script locally, exactly like a human operator would.
- **No `actions/checkout`** - that action needs Node.js, which this
appliance container doesn't have and shouldn't need just for CI. The
workflow does a plain `git clone --depth 1` instead.
- **Secrets** (`GRAYLOG_ADMIN_PASSWORD`, `DISCORD_WEBHOOK_URL`) are stored
as repo-level Forgejo Actions secrets, not in any tracked file.
`GRAYLOG_EXTERNAL_URI` isn't secret (it's the public Web UI address) so
it's inlined directly in the workflow.
## What's still NOT included
- **D-Link switch parsing** — no sample logs were available.

View file

@ -499,6 +499,32 @@ logger -n 127.0.0.1 -P 5140 -d 'kernel: nf_conntrack: table full, dropping packe
із затримкою до хвилини. Перевірте сторінку Alerts у Graylog та відповідний
Discord-канал.
## CI/CD через Forgejo Actions
Forgejo-репозиторій проєкту (`git.zotac.keenetic.link/zotac/graylog-deploy`)
має вручну-запускний деплой-workflow: `.forgejo/workflows/deploy.yml`.
Його запуск (вкладка Actions → Deploy Graylog config → Run workflow)
клонує репо наново й повторно запускає `install-graylog.sh` — той самий
ідемпотентний скрипт, описаний по всьому цьому README, просто
автоматизований замість ручного scp.
- **Тригер навмисно ручний** (тільки `workflow_dispatch`, без
`on: push`) — це репо керує продакшн-системою моніторингу, тож людина
переглядає диф і сама натискає "Run workflow", а не кожен push тихо
передеплоює систему.
- **Раннер живе прямо всередині контейнера Graylog** (VMID 200, лейбл
`self-hosted:host`, встановлений у `/usr/local/bin/forgejo-runner`,
працює як systemd-сервіс). Нових SSH-ключів чи міжхостового доступу не
знадобилося — workflow просто клонує репо в `/tmp/graylog-deploy-ci` і
запускає скрипт локально, точно як це робив би оператор вручну.
- **Без `actions/checkout`** — ця дія вимагає Node.js, якого немає (і не
повинно бути) на цьому appliance-контейнері лише заради CI. Замість неї
workflow робить звичайний `git clone --depth 1`.
- **Секрети** (`GRAYLOG_ADMIN_PASSWORD`, `DISCORD_WEBHOOK_URL`) зберігаються
як repo-level секрети Forgejo Actions, а не в жодному відстежуваному
файлі. `GRAYLOG_EXTERNAL_URI` не є секретом (це публічна адреса Web UI),
тож вказаний прямо у workflow.
## Що ще НЕ реалізовано
- **Парсинг D-Link switch** — не було зразків логів.