Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

github-deployment-dashboard

Comes with a nifty list of your reporting services, and what environment has what latest commit on it.

image

Also, each service, if using a PAT for your repo as described below, could give you details on each service, with useful links:

image

A cross-repository deployment dashboard for GitHub. See which commit of each service is deployed to which environment, with drift detection.

Two components:

  1. Tracking Action — A reusable GitHub Action that records deployments via the GitHub Deployments API
  2. Dashboard — A single HTML file that visualizes the deployment matrix across services and environments

Two Modes

  1. Static Mode
  2. API Mode
Static mode (recommended for teams)API mode (simple setups)
How it worksDeploy action pushes status files; dashboard reads themDashboard queries GitHub API directly
Token in browserNot neededPAT required
Rate limitsNone (static file reads)~2 API calls per cell per refresh
Real-timeUpdates on every deployPolls on interval
Best forMono-repos, many services, teamsFew services, personal use

Quick Start (Static Mode)

1. Create a dashboard repo

This dashboard tool supports both monorepos and multi-repos. To make everything easier, and to be able to host a dedicated url for it within Github using Pages, use a new repository:

Create a dedicated repo (e.g., your-org/deployment-dashboard) to act as the central hub. This repo holds the dashboard UI and receives status files from all your service deployments. Keeping it separate means your source repos stay clean and the dashboard is accessible to anyone in the org without needing a token.

Create a gh-pages branch (or whatever floats your boat, just remember to target it when copying the lines below) with two files:

  • index.html — simply copy it from this repo's dashboard/ directory
  • .deployment-dashboard.yml — your config (see Configuration)

2. Add the tracking action to each service's deploy workflow

- uses: RKrogh/github_deployment_dashboard/action@mainwith:
environment: stagingservice: my-service # required for mono-reposdashboard-repo: your-org/deployment-dashboarddashboard-branch: gh-pages # defaultdashboard-token: ${{ secrets.DASHBOARD_TOKEN }}

On every deploy, the action writes a status file (status/{service}/{env}.json) to the dashboard repo. Each service/environment combination gets its own file, so concurrent deploys never conflict.

3. Enable GitHub Pages

In the dashboard repo settings, set GitHub Pages source to /(root) on the gh-pages branch. The dashboard is now live at https://your-org.github.io/deployment-dashboard — no token needed!

Quick Start (API Mode)

1. Add the tracking action (without dashboard-repo)

- uses: RKrogh/github_deployment_dashboard/action@mainwith:
environment: staging

2. Open the dashboard

Open dashboard/index.html, switch to "GitHub API" mode, enter your PAT, and paste your config.

Action Reference

Inputs

InputRequiredDefaultDescription
environmentYesTarget environment name (e.g., dev, staging, prod)
serviceNoRepository nameService name. Set this for mono-repos to distinguish services.
versionNoShort SHAVersion string (semver tag, build number, etc.)
statusNosuccessDeployment status: success, failure, error, inactive, in_progress, queued, pending
environment-urlNoURL to the deployed environment
descriptionNoAuto-generatedFree-form description
tokenYes${{ github.token }}GitHub token. The default token works for the current repo.
dashboard-repoNoRepository to write status files to (e.g., org/deployment-dashboard). Enables static mode.
dashboard-branchNogh-pagesBranch to write status files to.
dashboard-tokenNoSame as tokenToken with write access to the dashboard repo. Set this if the dashboard repo differs from the current repo.

Outputs

OutputDescription
deployment-idID of the created GitHub deployment
serviceResolved service name
versionResolved version string

Token Permissions

permissions:
deployments: write # always requiredcontents: write # needed if dashboard-repo is the same repo

If dashboard-repo is a different repo, create a PAT or GitHub App token with contents:write on that repo and store it as DASHBOARD_TOKEN secret.

Dashboard Setup

The dashboard is a single index.html file with no build step. It supports two data modes:

  • Static mode — Place it in the dashboard repo on GitHub Pages alongside the status files. The dashboard auto-detects .deployment-dashboard.yml next to it. No token needed — the browser reads static JSON files directly.
  • API mode — Open locally or host anywhere. The dashboard queries the GitHub Deployments API directly, so a GitHub PAT is required in the browser.

Configuration

org: your-orgenvironments:
- dev
- staging
- prodservices:
- repo: order-service
- repo: gateway-apidisplay_name: API Gateway
- repo: backend-monoreposervices:
- name: auth-module
- name: billing-module

Mono-Repo Support

For mono-repos where multiple services are deployed from a single repository:

  1. In your workflow, set the service input to differentiate deployments:

    - uses: RKrogh/github_deployment_dashboard/action@mainwith:
    environment: stagingservice: auth-moduledashboard-repo: your-org/deployment-dashboard
  2. In your config, list sub-services under the repo:

    - repo: backend-monoreposervices:
    - name: auth-module
    - name: billing-module

The action stores the service name in both the deployment payload and the status file path (status/auth-module/staging.json).

Drift Detection

The dashboard detects "drift" when the commit SHA deployed to your first environment (e.g., dev) differs from the last environment (e.g., prod). Drifted services are highlighted with an orange indicator showing the number of commits ahead (in API mode).

Status File Format

Each status file written by the action (status/{service}/{env}.json):

{
"service": "auth-module",
"environment": "staging",
"sha": "abc1234def5678...",
"ref": "refs/heads/main",
"version": "v1.2.3",
"status": "success",
"timestamp": "2026-02-13T12:00:00.000Z",
"description": "auth-module@v1.2.3 deployed to staging",
"environment_url": "https://staging.example.com",
"repo": "backend-monorepo",
"owner": "your-org"
}

Examples

See the examples/ directory:

Contributing

Building the action

cd action
npm install
npm run build # Compiles to dist/index.js
npm run typecheck # Type-check only (no emit)

The dist/ directory is committed to the repo (required by GitHub Actions).

Dashboard

The dashboard is a single HTML file — edit dashboard/index.html directly. No build step needed.

License

MIT

About

Get and overview of the deployment states of your services.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages