This is documentation for the next version of Grafana documentation. For the latest stable release, go to the latest version.

Enterprise Open source Grafana Cloud

Set up Git Sync as code

Caution

Git Sync is available in public preview for Grafana Cloud, and is an experimental feature in Grafana v12 for open source and Enterprise editions. Documentation and support is available based on the different tiers but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.

Git Sync is under development. Refer to Usage and performance limitations for more information. Contact Grafana for support or to report any issues you encounter and help us improve this feature.

You can also configure Git Sync using grafanactl. Since Git Sync configuration is managed as code using Custom Resource Definitions (CRDs), you can create a Repository CRD in a YAML file and use grafanactl to push it to Grafana. This approach enables automated, GitOps-style workflows for managing Git Sync configuration instead of using the Grafana UI.

To set up Git Sync with grafanactl, follow these steps:

  1. Understand requirements, known issues, and limitations before you begin
  2. Create the repository CRD
  3. Push the repository CRD to Grafana
  4. Manage repository resources
  5. Verify setup

For more information, refer to the following documents:

Create the repository CRD

Create a repository.yaml file defining your Git Sync configuration:

YAML
apiVersion: provisioning.grafana.app/v0alpha1
kind: Repository
metadata:
  name: <REPOSITORY_NAME>
spec:
  title: <REPOSITORY_TITLE>
  type: github
  github:
    url: <GITHUB_REPO_URL>
    branch: <BRANCH>
    path: grafana/
    generateDashboardPreviews: true
  sync:
    enabled: true
    intervalSeconds: 60
    target: folder
  workflows:
    - write
    - branch
secure:
  token:
    create: <GITHUB_PAT>

Replace the placeholders with your values:

  • <REPOSITORY_NAME>: Unique identifier for this repository resource
  • <REPOSITORY_TITLE>: Human-readable name displayed in Grafana UI
  • <GITHUB_REPO_URL>: GitHub repository URL
  • <BRANCH>: Branch to sync
  • <GITHUB_PAT>: GitHub Personal Access Token

Note

Only target: folder is currently supported for Git Sync.

Configuration parameters

The following configuration parameters are available:

FieldDescription
metadata.nameUnique identifier for this repository resource
spec.titleHuman-readable name displayed in Grafana UI
spec.typeRepository type (github)
spec.github.urlGitHub repository URL
spec.github.branchBranch to sync
spec.github.pathDirectory path containing dashboards
spec.github.generateDashboardPreviewsGenerate preview images (true/false)
spec.sync.enabledEnable synchronization (true/false)
spec.sync.intervalSecondsSync interval in seconds
spec.sync.targetWhere to place synced dashboards (folder)
spec.workflowsEnabled workflows: write (direct commits), branch (PRs)
secure.token.createGitHub Personal Access Token

Push the repository CRD to Grafana

Before pushing any resources, configure grafanactl with your Grafana instance details. Refer to the grafanactl configuration documentation for setup instructions.

Push the repository configuration:

sh
grafanactl resources push --path <DIRECTORY>

The --path parameter has to point to the directory containing your repository.yaml file.

After pushing, Grafana will:

  1. Create the repository resource
  2. Connect to your GitHub repository
  3. Pull dashboards from the specified path
  4. Begin syncing at the configured interval

Manage repository resources

List repositories

To list all repositories:

sh
grafanactl resources get repositories

Get repository details

To get details for a specific repository:

sh
grafanactl resources get repository/<REPOSITORY_NAME>
grafanactl resources get repository/<REPOSITORY_NAME> -o json
grafanactl resources get repository/<REPOSITORY_NAME> -o yaml

Update the repository

To update a repository:

sh
grafanactl resources edit repository/<REPOSITORY_NAME>

Delete the repository

To delete a repository:

sh
grafanactl resources delete repository/<REPOSITORY_NAME>

Verify setup

Check that Git Sync is working:

sh
# List repositories
grafanactl resources get repositories

# Check Grafana UI
# Navigate to: Administration → Provisioning → Git Sync