Skip to content

Latest commit

 

History

History
81 lines (57 loc) · 4.02 KB

File metadata and controls

81 lines (57 loc) · 4.02 KB

SETUP — status.instanode.dev

This file documents the human-ops steps required to bring status.instanode.dev from a placeholder (Jekyll-rendered README.md) to a fully rendered Upptime status page with live badges, graphs, and response-time history.

Current state (2026-05-11)

  • DNS: status.instanode.dev CNAMEs to instanode-dev.github.io (verified — HTTP/2 200).
  • GitHub Pages: enabled on this repo, source = master branch root.
  • Uptime CI: green every 5 min — probes are running and the history/*.yml records exist.
  • Summary CI, Graphs CI, Response Time CI: failing — workflows produce the correct artifacts but git push to master is rejected by branch protection (enforce_admins: true).
  • Static Site CI: deleted in this PR — the upstream action upptime/status-page@master no longer exists. The Jekyll-rendered README.md is the status page, which is the modern Upptime default. No separate static-site step is needed.

Why the site looks like a README today

Without Summary CI / Graphs CI ever succeeding, the README.md was never auto-rewritten to include the badge table, uptime percentages, and response-time graphs. So Jekyll renders the manually-authored README. Once the workflows can push, the README is regenerated daily and the page transforms.

Required ops (one-time, ~5 min)

1. Create a GH_PAT

A scheduled GitHub Action using the default GITHUB_TOKEN is not allowed to bypass branch protection — that's the entire point of the protection. The Upptime docs recommend a personal access token with repo scope.

GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic)
  Note: "instant-status push token"
  Expiration: 1 year (or longer)
  Scopes: repo  (full control of private repos)
Generate → copy the token (starts with ghp_)

2. Add the PAT as a repository secret

github.com/InstaNode-dev/instant-status → Settings → Secrets and variables → Actions → New repository secret
  Name:  GH_PAT
  Value: <paste the ghp_ token>

All four Upptime workflows already reference secrets.GH_PAT || secrets.GITHUB_TOKEN so no workflow edits are needed.

3. Allow the PAT to bypass branch protection

The PAT must be owned by a user listed in branch-protection bypass, OR enforce_admins must be false. Pick one:

Option A (recommended): turn off enforce_admins

gh api -X DELETE repos/InstaNode-dev/instant-status/branches/master/protection/enforce_admins

This keeps PR review requirements in place for humans but lets admin-PAT pushes through. Re-enable with:

gh api -X POST repos/InstaNode-dev/instant-status/branches/master/protection/enforce_admins

Option B: allow specific bypass actors — Repo Settings → Branches → branch protection rule → "Allow specified actors to bypass required pull requests" → add the PAT owner.

4. Seed the badge directory

Once the secret + protection bypass are in place:

Actions tab → Setup CI → Run workflow → on master

This bootstraps api/, history/, and graphs/. After it succeeds, the next scheduled Summary CI run (00:00 UTC) will rewrite README.md with the live status table — or you can run Summary CI manually from the Actions tab to see it immediately.

Verifying it worked

# 1. README on master now contains a badge table:
gh api repos/InstaNode-dev/instant-status/contents/README.md \
  | jq -r .content | base64 -d | head -40

# 2. Status site reflects it (Pages can take ~60 s to rebuild after a master push):
curl -s https://status.instanode.dev | grep -c '<img.*shields.io' 
# Expect: >0 (one badge per monitored service)

# 3. Uptime workflows continue green every 5 min:
gh run list --repo InstaNode-dev/instant-status --workflow=uptime.yml --limit 3

Rollback

If anything goes wrong, just revert this PR — the previous workflows + 3-service config will resume. The history/ and api/ directories generated by future Uptime CI runs are append-only and harmless.