-
Notifications
You must be signed in to change notification settings - Fork 0
GitHub Pages Publishing
Every pipeline run generates a new HTML report and automatically publishes it to the public site at flexrpl.github.io/signal.
run_and_publish.sh
→ git add reports/ index.html archive.html
→ git commit -m "signal: daily brief YYYY-MM-DD"
→ git push origin main
→ .github/workflows/static.yml triggers
→ GitHub Actions uploads repo root to GitHub Pages
→ https://flexrpl.github.io/signal/ is updatedReports are static HTML files committed directly to the main branch. GitHub Pages serves the repository root, so any file committed to main is immediately accessible.
| File | URL | Updated |
|---|---|---|
index.html |
flexrpl.github.io/signal/ |
Every run |
archive.html |
flexrpl.github.io/signal/archive.html |
Every run |
reports/brief_YYYYMMDD_HHMM.html |
flexrpl.github.io/signal/reports/brief_*.html |
Every run (new file added) |
images/signal_banner.png |
flexrpl.github.io/signal/images/signal_banner.png |
Static |
.github/workflows/static.yml handles the deployment. It runs on every push to main:
on:
push:
branches: ["main"]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/configure-pages@v3
- uses: actions/upload-pages-artifact@v2
with:
path: "." # uploads the entire repository root
- uses: actions/deploy-pages@v2The path: '.' ensures the entire repository — including reports/, index.html, archive.html, and images/ — is uploaded on every push.
If starting from scratch on a new fork:
- Go to the repository on GitHub
- Settings → Pages
- Under Source, select GitHub Actions
- The
static.ymlworkflow handles everything else automatically
Generated by _update_index() in main.py after each run. It contains:
- The
signal_banner.pngas a full-page background with a dark overlay - A "Latest Brief" card linking to the most recent report
- A "Browse Past Briefs" card linking to
archive.html - The date and time (UTC) of the most recent brief
The HTML is written inline in main.py (not templated from a file) to keep the pipeline self-contained.
Also generated by _update_index(). Contains:
- A reverse-chronological list of all
reports/brief_*.htmlfiles - A "latest" badge on the most recent entry
- A link back to the landing page
If archive.html is missing from a git commit (it's in .gitignore is NOT the case — it's tracked), the archive will show stale data. The run_and_publish.sh script explicitly stages it:
git add reports/ index.html archive.htmlReports are named brief_YYYYMMDD_HHMM.html where the date and time are the UTC timestamp of report generation:
reports/brief_20260514_1353.html → May 14, 2026 at 13:53 UTCThe filename format was simplified in May 2026 — earlier reports may include a _runN suffix (e.g. brief_20260511_1516_run5.html). These are renamed in the git history and display correctly in the archive.
# Open the most recent report
open reports/brief_$(ls reports/ | sort | tail -1)
# Or use the path printed at the end of a run:
# open /Users/garotconklin/garotm/fleXRPL/signal/reports/brief_20260514_1353.htmlReports are fully self-contained — all CSS and JS is inline. No server required.
Signal · Repository · fleXRPL · Daily political intelligence — powered by local AI