Deze repository bevat een pure GitHub Actions reconciler die UptimeRobot HTTP monitors synchroniseert op basis van tenant YAML bestanden uit een andere (public) GitHub repo.
- Leest tenant files met een glob (default:
nextcloud-platform/values/tenants/tenant-*.yaml) uit een bronrepo. - Verwacht per file minimaal
tenant.name. - Leidt hostname af op basis van conventie:
-accept-><org>.accept.<DOMAIN_BASE>-test-><org>.test.<DOMAIN_BASE>-prod-><org>.<DOMAIN_BASE>
- Maakt gewenste URL:
https://{host}{HEALTH_PATH}. - Reconcilet UptimeRobot monitors:
- create als monitor ontbreekt
- update als
urlofintervalafwijkt - delete als een eerder beheerde monitor niet meer gewenst is
Alleen monitors waarvan de friendly_name start met FRIENDLY_PREFIX worden door deze tool beheerd, aangepast of verwijderd.
Primary key / identiteit:
friendly_name = FRIENDLY_PREFIX + tenant_name
Hierdoor kan de reconciler nooit per ongeluk monitors verwijderen die niet door deze tool worden "owned".
UPTIMEROBOT_API_KEY(repo secret)
SOURCE_REPOis standaard vastgezet ophttps://codeberg.org/conduction/Nextcloud-base(Codeberg; cloned met plaingit cloneomdatactions/checkoutalleen GitHub-repos kan ophalen). Alleen-accepten-prodtenants worden gemonitord (test/demo overgeslagen);tenant.hostnameoverrides worden gehonoreerd.SOURCE_REF(optioneel, defaultmain)TENANTS_GLOB(optioneel, defaultnextcloud-platform/values/tenants/tenant-*.yaml)DOMAIN_BASE(optioneel, defaultcommonground.nu)HEALTH_PATH(optioneel, default/status.php)INTERVAL_SECONDS(optioneel, default60)FRIENDLY_PREFIX(optioneel, default[gitops] nextcloud)DRY_RUN(optioneel, defaultfalse)
Workflow: .github/workflows/sync.yml
- Triggers:
- push naar
main - pull requests naar
main - nightly schedule
- handmatig via
workflow_dispatch
- push naar
concurrencystaat op 1 actieve sync tegelijk.- PR runs forceren altijd
DRY_RUN=true(plan/output-only, geen mutaties). - Push/schedule/workflow_dispatch gebruiken
DRY_RUNuit repo vars (defaultfalse).
python -m venv .venv
source .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1
pip install -r requirements.txtZet daarna env vars, minimaal:
export UPTIMEROBOT_API_KEY=xxxxSOURCE_REPO hoeft lokaal niet gezet te worden tenzij je wilt overriden; default is:
https://codeberg.org/conduction/Nextcloud-base.
Voor lokaal testen met een geclonede bronrepo kun je bijvoorbeeld:
export TENANTS_GLOB=../bronrepo/nextcloud-platform/values/tenants/tenant-*.yaml
python src/sync_uptimerobot.pyDry-run voorbeeld:
export DRY_RUN=true
python src/sync_uptimerobot.pyDe sync print acties en sluit af met:
Summary: created=X, updated=Y, deleted=Z, unchanged=Q
Bij API-fouten of ongeldige verplichte configuratie exit het script non-zero met context.
pip install -r requirements-dev.txt
PYTHONPATH=src pytest -q