Skip to content

feat: org-wide status dashboard served from platform repo #17

@kristopherjturner

Description

@kristopherjturner

Overview

Build a single-pane-of-glass status dashboard that aggregates the health and CI state of every repo in the AzureLocal GitHub org. The dashboard is generated and served entirely from azurelocal-platform — no other repo is modified to host it.


Goals

  • One URL that shows the live status of every AzureLocal repo
  • CI pass/fail visible at a glance without clicking into individual repos
  • Near-real-time updates — not just scheduled polling
  • No external tooling, no third-party dashboards, no new infrastructure

Architecture

1. GitHub Pages from platform repo

Enable GitHub Pages on the azurelocal-platform repo (from gh-pages branch). Configure a CNAME so the dashboard is accessible at platform.azurelocal.cloud or similar. No other repo is involved in hosting.

2. Dashboard generator workflow

New workflow in azurelocal-platform: .github/workflows/generate-dashboard.yml

Triggers:

  • Schedule: every 30 minutes
  • workflow_dispatch for manual refresh
  • repository_dispatch with event type dashboard-refresh (called by other repos on CI completion — see below)

Steps:

  1. Authenticate with GitHub API using a scoped org-level token or GitHub App
  2. Query every repo in the AzureLocal org for:
    • Latest release tag and version
    • Last commit timestamp and author
    • Last 5 workflow runs (name, status, conclusion, run URL)
    • Open issue count
    • Open PR count
  3. Render index.html from a template
  4. Commit output to gh-pages branch
  5. GitHub Pages serves it automatically

3. Event-driven refresh via .github repo

Add a reusable workflow to the org .github repo:
.github/workflows/reusable-notify-dashboard.yml

Any repo's CI workflow calls this on completion:

jobs:
  notify-dashboard:
    uses: AzureLocal/.github/.github/workflows/reusable-notify-dashboard.yml@main
    secrets: inherit

The reusable workflow fires a repository_dispatch POST to azurelocal-platform, triggering an immediate dashboard regeneration. This means a new release or a failed CI run updates the dashboard within seconds.


Dashboard content

Header bar

  • Org name + logo
  • Total repo count
  • Passing / failing / in-progress counts (colored)
  • Last updated timestamp

Per-repo row or card

Field Source
Repo name GitHub API
Latest release Latest tag via API
Overall CI status Last workflow run conclusion
Last 5 run history Workflow runs API (icons: ✓ ✗ ⟳)
Open issues Issues API
Open PRs Pulls API
Last commit Commits API

Clicking a repo name goes directly to that GitHub repo. Clicking a workflow run icon goes to that run.

Color coding

  • Green — all workflows passing, no failures
  • Red — one or more workflows failed
  • Yellow — workflow in progress or no recent runs
  • Gray — repo has no workflows configured

Files to create

  • .github/workflows/generate-dashboard.yml — scheduled + dispatch generator workflow
  • dashboard/template.html — HTML/CSS/JS template the workflow populates
  • dashboard/generate.ps1 or dashboard/generate.js — script that queries the API and renders the template
  • gh-pages branch — auto-managed by the workflow, not manually edited

Files to update (existing)

  • azurelocal-platform reusable workflows — add repository_dispatch call at completion so CI events from repos that already use platform reusable workflows automatically trigger a dashboard refresh
  • Org .github repo — add reusable-notify-dashboard.yml

Secrets / permissions required

  • A GitHub PAT or GitHub App token with repo and actions:read scope across the org, stored as an org-level secret (e.g. ORG_DASHBOARD_TOKEN)
  • GitHub Pages enabled on azurelocal-platform
  • CNAME DNS record pointing to GitHub Pages (if using custom domain)

Acceptance criteria

  • Dashboard accessible at platform.azurelocal.cloud (or agreed URL)
  • All AzureLocal org repos appear on the dashboard
  • CI status reflects the actual last workflow run for each repo
  • Last 5 workflow runs shown per repo with pass/fail icons
  • Dashboard refreshes on schedule (every 30 min) and on repository_dispatch
  • At least one existing repo CI workflow triggers a dashboard refresh on completion
  • Reusable notify workflow added to .github repo for other repos to opt in
  • Dashboard is mobile-readable (responsive layout)
  • No manual steps required after initial setup — fully automated

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions