Az Updater egy kis Go eszköz, amely figyeli a Grav wiki, a Redmine és a Gitea változásait, és Discord-webhookokra posztolja az új aktivitást. Egy helyi gyorsítótár gondoskodik róla, hogy minden változás csak egyszer kerüljön bejelentésre.
Az updater INTERVAL_MINUTES percenként végigmegy a forrásokon:
*_CONTENT_LIMIT darab elemet.cache.json tartalmával.cache.json-t, hogy a következő kör ne ismételje meg.| Forrás | Mit kér le | Változásjel | Üzenet |
|---|---|---|---|
| Grav wiki | GET /custom/updates.json?limit=N |
az oldal modified időbélyege |
📖 [Grav] - Oldalcím |
| Redmine | GET /issues.json?limit=N&sort=updated_on:desc |
az issue updated_on mezője |
🎫 [Redmine] - #123 Tárgy |
| Gitea | GET /api/v1/repos/ORG/REPO/commits?limit=N repónként |
a commit SHA-ja | 📝 [Gitea] - (org/repo) commitüzenet |
A wiki a /custom/updates.json végponton adja ki az oldalakat, a fájl módosítási ideje szerint csökkenő sorrendben (sablon: themes/ttgwiki/templates/updates.json.twig a wiki-pages repóban). Az updater csak a route, title és modified mezőket használja; a link GRAV_BASE_URL + route.
{"lang":"en","count":1,"pages":[
{"route":"/team/onboarding","title":"Onboarding","modified":1792479011,
"updatedAt":"2026-10-20T06:50:11+00:00","locale":"en","tags":["team"],"private":true}
]}
grav_ + route, tehát egy oldal minden mentése (új modified) új üzenetet ad.private: true) is bekerülnek a listába a címükkel; a törzsüket a végpont nem adja ki, és az updater nem is kéri.Környezeti változók; másold az env-example fájlt .env néven. Minden forrás minden körben lefut — amelyiknek nincs beállítva az URL-je, az csendben üres listát ad.
| Változó | Leírás | Alapérték |
|---|---|---|
INTERVAL_MINUTES |
Két kör között eltelt idő (perc). | 5 |
DISCORD_WEBHOOK |
Tartalék webhook; jelenleg minden forrásnak saját van, így nem használja semmi. | - |
DISCORD_FAKE |
Ha true, az üzenetek csak a logba kerülnek, Discordra nem. |
false |
| Változó | Leírás |
|---|---|
GRAV_BASE_URL |
A wiki alap-URL-je, záró perjel nélkül: https://wiki.teletypegames.org. |
GRAV_DISCORD_WEBHOOK |
Discord-webhook a wiki-értesítésekhez. |
GRAV_CONTENT_LIMIT |
Hány legutóbb módosított oldalt nézzen. |
A Grav-végponthoz nem kell token.
| Változó | Leírás |
|---|---|
REDMINE_BASE_URL |
A Redmine alap-URL-je (https://pm.teletypegames.org). |
REDMINE_KEY |
Redmine API-kulcs (X-Redmine-API-Key). |
REDMINE_DISCORD_WEBHOOK |
Discord-webhook a Redmine-értesítésekhez. |
REDMINE_CONTENT_LIMIT |
Hány legutóbb frissült issue-t nézzen. |
| Változó | Leírás |
|---|---|
GITEA_BASE_URL |
A Gitea alap-URL-je (https://git.teletypegames.org). |
GITEA_TOKEN |
Gitea API-token. |
GITEA_REPOS |
A figyelt repók vesszővel elválasztva, pl. games/mranderson,games/impostor. Csak a commitokat figyeli, issue-kat és PR-eket nem. |
GITEA_DISCORD_WEBHOOK |
Discord-webhook a Gitea-értesítésekhez. |
GITEA_CONTENT_LIMIT |
Repónként hány legutóbbi commitot nézzen. |
Előbb állítsd be a .env fájlt, aztán vagy:
go run main.go # helyben
docker compose up -d # konténerben
A konténer a repó mappáját mountolja /app-ként, és indításkor go run main.go-t futtat. A cache.json is ebben a mappában él, így túléli az újraindítást. A konténer az interstack hálózaton fut, 384m memórialimittel.
Élesben: /srv/stacks/updater a szerveren, a log docker logs updater-app. A masterre pusholt változás, ha a Go-forrást, a Dockerfile-t vagy a compose.yaml-t érinti, go vet és build után Woodpeckerből települ (ci-deploy updater, lásd Telepítés); a .env és a cache.json a szerveren marad.
| Fájl | Tartalom |
|---|---|
main.go |
Belépési pont, a lib.Runner()-t hívja. |
lib/runner.go |
A konfiguráció beolvasása, a forrás- és webhooklista, a fő ciklus. |
lib/fetcher.grav.go, lib/fetcher.redmine.go, lib/fetcher.gitea.go |
A három élő forrás. |
lib/fetcher.go |
Közös HTTP-kérés és a gyorsítótár-ellenőrzés. |
lib/sender.discord.go, lib/message.go |
A Discord-webhook és az üzenetformátum. |
lib/cache.go |
cache.json betöltése és mentése. |
env-example |
Konfigurációs sablon. |
https://git.teletypegames.org/services/updater