- Documentation
- Learning Hub
- Dashboards as Code with the Foundation SDK
- CI/CD automation
GitHub Actions workflow
Complete workflow
You can deploy dashboards with a single terraform apply. But if someone still has to remember to run that command after every change, you haven’t removed the human bottleneck. Now you’ll automate the full dashboard lifecycle with GitHub Actions.
This workflow generates and deploys your dashboards. It runs in two cases: when you open or update a pull request, and when commits are pushed to main. On a pull request, it runs generate and plan to preview the changes. On a push to main, it also runs apply to deploy them.
name: Deploy Grafana Dashboards
on:
push:
branches: [main]
pull_request:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
- name: Generate dashboard JSON
run: go run main.go
- name: Setup Terraform
uses: hashicorp/setup-terraform@v1
- name: Terraform Init
run: terraform init
- name: Terraform Plan
run: terraform plan -input=false -no-color
- name: Terraform Apply
if: github.ref == 'refs/heads/main'
run: terraform apply -auto-approve
env:
GRAFANA_AUTH: ${{ secrets.GRAFANA_TOKEN }}Step breakdown
Each step in the workflow handles one stage of the generate-plan-apply pipeline.
The if: github.ref == 'refs/heads/main' condition on the apply step gates deployment: plan runs on every push, but apply runs only when changes land on main. Pull requests get a plan preview without deploying anything.
Alternative CI systems
You can adapt this to other CI systems (GitLab CI, CircleCI, Jenkins) by translating the same five steps. Your Foundation SDK code and Terraform configuration stay the same regardless of which CI tool runs them.