Skip to content
Merged
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
42 changes: 42 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Deploy site to GitHub Pages

on:
push:
branches: [main]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

# One deployment at a time; a newer push replaces a queued one but never cancels one in progress.
concurrency:
group: pages
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@v4
- name: Set up Pages
uses: actions/configure-pages@v5
- name: Assemble site
run: bash site/build.sh _site
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: _site

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ __pycache__/
uv.lock.bak
.pytest_out
config/
_site/
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

Ion is a steward bot for a GitHub organisation. It watches every repo, spots drift from your policy, and proposes structural changes (merge, split, archive, rename, move code). **It never changes structure without a maintainer's approval.** Apache-2.0.

**Website:** [aska-digital.github.io/ion](https://aska-digital.github.io/ion/), an infographic abstract with a working model of the approval gate, plus a guide to running ion. The site source lives in `site/` and deploys with `.github/workflows/pages.yml`.

See [Why ion](#why-ion) for the name.

```
Expand Down
38 changes: 38 additions & 0 deletions site/404.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>No approved path to that page | Ion</title>
<meta name="description" content="That page does not exist. Ion acts only along approved paths, and this was not one of them.">
<meta name="theme-color" content="#06090d">
<link rel="icon" href="favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="style.css">
</head>
<body>
<a class="skip" href="#main">Skip to content</a>
<header class="top"><div class="bar">
<a class="brand" href="index.html" aria-label="Ion, home">
<svg width="26" height="26" viewBox="0 0 64 64" aria-hidden="true"><g stroke="#5fd4e6" stroke-width="2.4"><path d="M14 14h36M14 50h36M14 14v36M50 14v36M14 14l18 18M50 14L32 32M14 50l18-18M50 50L32 32" opacity=".55"/></g><g fill="#5fd4e6"><circle cx="14" cy="14" r="4.2"/><circle cx="50" cy="14" r="4.2"/><circle cx="14" cy="50" r="4.2"/><circle cx="50" cy="50" r="4.2"/></g><circle cx="32" cy="32" r="7" fill="#e8a33d"/><path d="M32 27.6v8.8M27.6 32h8.8" stroke="#06090d" stroke-width="2.6" stroke-linecap="round"/></svg>
<span>Ion</span><small>Org steward</small>
</a>
<nav aria-label="Main"><ul>
<li><a href="index.html">Abstract</a></li>
<li><a href="guide.html">Guide</a></li>
<li><a href="https://github.com/aska-digital/ion">GitHub</a></li>
</ul></nav>
</div></header>
<div class="layout"><main id="main" tabindex="-1" style="grid-column:1/-1;max-width:760px">
<section class="panel">
<div class="plabel"><b><span class="k">404</span> // No such path</b><span class="tags"><span class="tag t-hum">Gate closed</span></span></div>
<h1>No approved path to that page.</h1>
<p class="lede">Charge does work only along a path, and this URL is not one. Nothing was changed, which is very much the house style.</p>
<div class="cta">
<a class="btn primary" href="index.html">The abstract <span class="arr" aria-hidden="true">&rarr;</span></a>
<a class="btn" href="guide.html">The guide <span class="arr" aria-hidden="true">&rarr;</span></a>
<a class="btn" href="https://github.com/aska-digital/ion">Repository <span class="arr" aria-hidden="true">&rarr;</span></a>
</div>
</section>
</main></div>
</body>
</html>
Binary file added site/apple-touch-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 29 additions & 0 deletions site/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env bash
# Assemble the GitHub Pages artifact from site/.
# Used by .github/workflows/pages.yml and for local testing:
# bash site/build.sh [output-dir] (default: _site in the repository root)
# python3 -m http.server -d _site 8000
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
OUT="${1:-$ROOT/_site}"
case "$OUT" in
""|"/"|"$ROOT"|"$HOME") echo "refusing to use '$OUT' as the output directory" >&2; exit 1 ;;
esac

rm -rf "$OUT"
mkdir -p "$OUT/data"

# Everything in site/ except this script and og.html (the page og.png is
# rendered from; see the comment at the top of og.html).
for f in "$ROOT"/site/*; do
case "$(basename "$f")" in build.sh|og.html) continue ;; esac
cp -R "$f" "$OUT/"
done

# Build stamp shown in the page footer.
COMMIT="${GITHUB_SHA:-$(git -C "$ROOT" rev-parse HEAD 2>/dev/null || true)}"
printf '{"commit":"%s","built":"%s"}\n' "$COMMIT" "$(date -u +%Y-%m-%d)" > "$OUT/data/build.json"

touch "$OUT/.nojekyll"
echo "Site assembled in $OUT"
Binary file added site/favicon-32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions site/favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading