docs/sources/as-code/observability-as-code/git-sync/scenarios/dev-prod.md
Use separate Grafana instances for development and production. Each syncs with different Git locations to test dashboards before production.
┌────────────────────────────────────────────────────────────┐
│ GitHub Repository │
│ Repository: your-org/grafana-manifests │
│ Branch: main │
│ │
│ grafana-manifests/ │
│ ├── dev/ │
│ │ ├── dashboard-new.json ← Development dashboards │
│ │ └── dashboard-test.json │
│ │ │
│ └── prod/ │
│ ├── dashboard-stable.json ← Production dashboards │
│ └── dashboard-approved.json │
└────────────────────────────────────────────────────────────┘
↕ ↕
Git Sync (dev/) Git Sync (prod/)
↕ ↕
┌─────────────────────┐ ┌─────────────────────┐
│ Dev Grafana │ │ Prod Grafana │
│ │ │ │
│ Repository: │ │ Repository: │
│ - path: dev/ │ │ - path: prod/ │
│ │ │ │
│ Creates folder: │ │ Creates folder: │
│ "grafana-manifests"│ │ "grafana-manifests"│
└─────────────────────┘ └─────────────────────┘
In Git:
your-org/grafana-manifests
├── dev/
│ ├── dashboard-new.json
│ └── dashboard-test.json
└── prod/
├── dashboard-stable.json
└── dashboard-approved.json
In Grafana Dashboards view:
Dev instance:
Dashboards
└── 📁 grafana-manifests/
├── New Dashboard
└── Test Dashboard
Prod instance:
Dashboards
└── 📁 grafana-manifests/
├── Stable Dashboard
└── Approved Dashboard
dev/ or prod/)Development:
your-org/grafana-manifestsmaindev/Production:
your-org/grafana-manifestsmainprod/dev/.dev/ to prod/.prod/.Instead of using different paths, you can configure instances to use different branches:
Development instance:
your-org/grafana-manifestsdevelopgrafana/Production instance:
your-org/grafana-manifestsmaingrafana/With this approach:
develop branchdevelop to mainmain branchFor stricter isolation, use completely separate repositories:
Development instance:
your-org/grafana-manifests-devmaingrafana/Production instance:
your-org/grafana-manifests-prodmaingrafana/