Wire MiTerm (canonical) to publish its static export into Mihir-Null.github.io, which serves GitHub Pages (nullis.me) from docs/. - package.json: `export` script (next build && next export -o out) that also regenerates the résumé mirrors via prebuild. - public/CNAME (nullis.me) + public/.nojekyll so the export is Pages-ready. - .github/workflows/deploy.yml: on push to main / manual dispatch, build and publish ./out to github.io/docs via peaceiris/actions-gh-pages. - docs/decisions/0002-deploy-topology.org: records the topology and the one operational dependency — the GH_PAGES_DEPLOY_TOKEN secret the user must add. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Nt6ycjAMdUMqGTGtbKocrspull/59/head
parent
2914f8dc02
commit
c899de346e
@ -0,0 +1,39 @@
|
|||||||
|
# Build the static export and publish it to the Mihir-Null.github.io repo,
|
||||||
|
# which serves GitHub Pages (custom domain nullis.me) from its docs/ folder.
|
||||||
|
# MiTerm is the canonical source; github.io holds build output only.
|
||||||
|
#
|
||||||
|
# REQUIRED SECRET: GH_PAGES_DEPLOY_TOKEN
|
||||||
|
# A fine-grained PAT (or classic repo-scoped token) with Contents: write on
|
||||||
|
# Mihir-Null/Mihir-Null.github.io. Add it under this repo's
|
||||||
|
# Settings → Secrets and variables → Actions. Until it is set, the deploy job
|
||||||
|
# fails (harmlessly — it only runs on main); the site keeps serving the last
|
||||||
|
# published build. See docs/decisions/0002-deploy-topology.org.
|
||||||
|
name: deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '20'
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install --frozen-lockfile
|
||||||
|
- name: Build static export (regenerates resume.json + resume.html first)
|
||||||
|
run: yarn export
|
||||||
|
- name: Publish to github.io/docs
|
||||||
|
uses: peaceiris/actions-gh-pages@v4
|
||||||
|
with:
|
||||||
|
personal_token: ${{ secrets.GH_PAGES_DEPLOY_TOKEN }}
|
||||||
|
external_repository: Mihir-Null/Mihir-Null.github.io
|
||||||
|
publish_branch: main
|
||||||
|
publish_dir: ./out
|
||||||
|
destination_dir: docs
|
||||||
|
cname: nullis.me
|
||||||
|
full_commit_message: 'Deploy from MiTerm ${{ github.sha }}'
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
:PROPERTIES:
|
||||||
|
:ID: 97d6eebf-f0a1-4001-a30f-9c06d01a1f3c
|
||||||
|
:END:
|
||||||
|
#+TITLE: ADR 0002 — Deploy Topology: MiTerm → github.io
|
||||||
|
#+FILETAGS: :adr:miterm:deploy:
|
||||||
|
|
||||||
|
Status: accepted (2026-07-16)
|
||||||
|
Deciders: Mihir Talati (navigator), agent (driver)
|
||||||
|
|
||||||
|
* Context
|
||||||
|
ADR 0001 set MiTerm as the canonical app and Mihir-Null.github.io as build
|
||||||
|
output only. The site is served by GitHub Pages from ~Mihir-Null.github.io~'s
|
||||||
|
~docs/~ folder on ~main~, at the custom domain nullis.me.
|
||||||
|
|
||||||
|
* Decision
|
||||||
|
MiTerm builds a static export (~yarn export~ → ~out/~) and a GitHub Action
|
||||||
|
publishes it into ~Mihir-Null.github.io/docs~ on every push to ~main~. The
|
||||||
|
github.io repo keeps only served artifacts (~docs/~, ~CNAME~, ~.well-known/~,
|
||||||
|
~LICENSE~, ~README~); its former Next.js source is removed.
|
||||||
|
|
||||||
|
- Mechanism: ~.github/workflows/deploy.yml~ uses
|
||||||
|
~peaceiris/actions-gh-pages@v4~ with ~external_repository~, publishing
|
||||||
|
~./out~ to ~docs/~ and writing ~CNAME: nullis.me~.
|
||||||
|
- The résumé mirrors (resume.json, public/resume.html) regenerate during
|
||||||
|
~yarn export~ via ~prebuild~, so a deploy always reflects resume.org.
|
||||||
|
|
||||||
|
* Operational dependency (ACTION REQUIRED)
|
||||||
|
The cross-repo push needs a token MiTerm's Actions can use:
|
||||||
|
- Create a fine-grained PAT with *Contents: write* on
|
||||||
|
Mihir-Null/Mihir-Null.github.io (or a classic repo-scoped token).
|
||||||
|
- Add it to MiTerm under Settings → Secrets and variables → Actions as
|
||||||
|
~GH_PAGES_DEPLOY_TOKEN~.
|
||||||
|
- Confirm Pages on github.io is set to *Deploy from a branch → main → /docs*.
|
||||||
|
Until the secret exists the deploy job fails harmlessly; the last published
|
||||||
|
build keeps serving.
|
||||||
|
|
||||||
|
* Consequences
|
||||||
|
- One source, one deploy path; the github.io repo stops drifting because it no
|
||||||
|
longer holds source.
|
||||||
|
- A one-time manual export seeded github.io/docs with the redesigned build so
|
||||||
|
the change is reviewable without waiting on the token.
|
||||||
|
- Vercel config (~vercel.json~) is retained for optional preview deploys of the
|
||||||
|
canonical app; it does not affect the nullis.me production path.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
nullis.me
|
||||||
Loading…
Reference in new issue