Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions .github/workflows/aggregate-and-deploy-dashboard.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Builds the CI dashboard static site from the committed JSON data file
# and uploads the result as a downloadable Actions artifact.
#
# The aggregated_ci_results.json must be committed at:
# ui/packages/ci-dashboard/public/data/aggregated_ci_results.json
#
# To view the dashboard locally after downloading:
# 1. Download the artifact zip from the Actions run summary
# 2. Unzip it
# 3. python3 -m http.server 8080 (or: npx serve .)
# 4. Open http://localhost:8080

name: Deploy CI Dashboard

on:
workflow_dispatch:

push:
branches: [main]
paths:
- 'ui/packages/ci-dashboard/src/**'
- 'ui/packages/ci-dashboard/index.html'
- 'ui/packages/ci-dashboard/public/data/aggregated_ci_results.json'

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '24'

- name: Set up pnpm
uses: pnpm/action-setup@v4
with:
version: '10'

- name: Install dependencies
working-directory: ui/packages/ci-dashboard
run: pnpm install --frozen-lockfile

- name: Build dashboard
working-directory: ui/packages/ci-dashboard
run: pnpm build

- name: Upload dashboard artifact
uses: actions/upload-artifact@v4
with:
name: ci-dashboard
path: ui/packages/ci-dashboard/dist
retention-days: 30


77 changes: 77 additions & 0 deletions .github/workflows/update-dashboard-data.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# Downloads a fresh aggregated_ci_results.json from a URL you provide,
# commits it to main, builds the dashboard, and uploads it as a
# downloadable Actions artifact — no external hosting required.
#
# How to use:
# 1. Upload your JSON file anywhere publicly reachable
# (GitHub Gist raw URL, S3 presigned URL, any direct download link)
# 2. Go to Actions → "Update Dashboard Data & Deploy"
# 3. Click "Run workflow", paste the URL, click Run
# 4. Download the "ci-dashboard" artifact from the run summary
# 5. Unzip → python3 -m http.server 8080 → open http://localhost:8080

name: Update Dashboard Data & Deploy

on:
workflow_dispatch:
inputs:
data_url:
description: 'Direct download URL for aggregated_ci_results.json'
required: true

permissions:
contents: write # needed to commit the JSON back to main

jobs:
update-and-build:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: main

- name: Download data file
run: |
curl -fsSL "${{ inputs.data_url }}" \
-o ui/packages/ci-dashboard/public/data/aggregated_ci_results.json
# Basic sanity check — must be valid JSON
node -e "JSON.parse(require('fs').readFileSync(
'ui/packages/ci-dashboard/public/data/aggregated_ci_results.json','utf8'
)); console.log('JSON valid')"

- name: Commit updated data to main
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add ui/packages/ci-dashboard/public/data/aggregated_ci_results.json
git diff --cached --quiet || \
git commit -m "chore: update CI dashboard data [skip ci]"
git push origin main

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '24'

- name: Set up pnpm
uses: pnpm/action-setup@v4
with:
version: '10'

- name: Install dependencies
working-directory: ui/packages/ci-dashboard
run: pnpm install --frozen-lockfile

- name: Build dashboard
working-directory: ui/packages/ci-dashboard
run: pnpm build

- name: Upload dashboard artifact
uses: actions/upload-artifact@v4
with:
name: ci-dashboard
path: ui/packages/ci-dashboard/dist
retention-days: 30

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,6 @@ terraform.rc
consul-k8s/
.vercel
vendor/

# Leftover output from the Python CI aggregation script — not part of source
/rc_aggregated_results.json
7 changes: 7 additions & 0 deletions ui/packages/ci-dashboard/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
node_modules/
dist/
.DS_Store
.vite/

# Data files dropped here by CI – never commit real results to source control
# public/data/*.json is intentionally committed — it is the dashboard data source.
Loading
Loading