cv+docs: relocate content under ~/blumeops/{cv,docs}
Keeps blumeops-managed state grouped under a single namespace in the home dir rather than scattered top-level dirs. Caddy block paths are derived from cv_content_dir / docs_content_dir, so the role-defaults edit propagates automatically. Validated end-to-end on indri: tarballs extracted to the new paths, sentinels written, second run is idempotent. Old ~/cv and ~/docs from the earlier validation run were removed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
9a81bc4633
commit
5b52f18356
7 changed files with 16 additions and 16 deletions
|
|
@ -5,6 +5,6 @@
|
|||
cv_version: "v1.0.3"
|
||||
cv_release_url: "https://forge.eblu.me/api/packages/eblume/generic/cv/{{ cv_version }}/cv-{{ cv_version }}.tar.gz"
|
||||
|
||||
cv_home: /Users/erichblume/cv
|
||||
cv_home: /Users/erichblume/blumeops/cv
|
||||
cv_content_dir: "{{ cv_home }}/content"
|
||||
cv_version_sentinel: "{{ cv_home }}/.installed-version"
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@
|
|||
docs_version: "v1.16.0"
|
||||
docs_release_url: "https://forge.eblu.me/eblume/blumeops/releases/download/{{ docs_version }}/docs-{{ docs_version }}.tar.gz"
|
||||
|
||||
docs_home: /Users/erichblume/docs
|
||||
docs_home: /Users/erichblume/blumeops/docs
|
||||
docs_content_dir: "{{ docs_home }}/content"
|
||||
docs_version_sentinel: "{{ docs_home }}/.installed-version"
|
||||
|
|
|
|||
|
|
@ -19,8 +19,8 @@ CV is a tiny static site (HTML + CSS + PDF). It needs no daemon, no database, no
|
|||
|
||||
| Concern | Path / detail |
|
||||
|---|---|
|
||||
| Content dir | `/Users/erichblume/cv/content/` |
|
||||
| Version sentinel | `/Users/erichblume/cv/.installed-version` |
|
||||
| Content dir | `/Users/erichblume/blumeops/cv/content/` |
|
||||
| Version sentinel | `/Users/erichblume/blumeops/cv/.installed-version` |
|
||||
| Caddy entry | `cv` service in `ansible/roles/caddy/defaults/main.yml` (`kind: static`) |
|
||||
| Public URL | `https://cv.eblu.me` (via [[flyio-proxy]]) |
|
||||
| Private URL | `https://cv.ops.eblu.me` (Caddy on indri) |
|
||||
|
|
@ -44,8 +44,8 @@ Two paths:
|
|||
## Verify
|
||||
|
||||
```fish
|
||||
ssh indri 'cat ~/cv/.installed-version'
|
||||
ssh indri 'ls -la ~/cv/content/'
|
||||
ssh indri 'cat ~/blumeops/cv/.installed-version'
|
||||
ssh indri 'ls -la ~/blumeops/cv/content/'
|
||||
curl -fsSI https://cv.ops.eblu.me/ # private
|
||||
curl -fsSI https://cv.eblu.me/ # public
|
||||
curl -fsSI https://cv.eblu.me/resume.pdf | grep -i disposition
|
||||
|
|
|
|||
|
|
@ -19,8 +19,8 @@ The docs site is fully static HTML produced by Quartz. Caddy can serve the extra
|
|||
|
||||
| Concern | Path / detail |
|
||||
|---|---|
|
||||
| Content dir | `/Users/erichblume/docs/content/` |
|
||||
| Version sentinel | `/Users/erichblume/docs/.installed-version` |
|
||||
| Content dir | `/Users/erichblume/blumeops/docs/content/` |
|
||||
| Version sentinel | `/Users/erichblume/blumeops/docs/.installed-version` |
|
||||
| Caddy entry | `docs` service in `ansible/roles/caddy/defaults/main.yml` (`kind: static`, `try_html: true`) |
|
||||
| Public URL | `https://docs.eblu.me` (via [[flyio-proxy]]) |
|
||||
| Private URL | `https://docs.ops.eblu.me` (Caddy on indri) |
|
||||
|
|
@ -39,8 +39,8 @@ The Caddy block uses `try_files {path} {path}/ {path}.html` and a `handle_errors
|
|||
## Verify
|
||||
|
||||
```fish
|
||||
ssh indri 'cat ~/docs/.installed-version'
|
||||
ssh indri 'ls ~/docs/content/'
|
||||
ssh indri 'cat ~/blumeops/docs/.installed-version'
|
||||
ssh indri 'ls ~/blumeops/docs/content/'
|
||||
curl -fsSI https://docs.ops.eblu.me/ # private
|
||||
curl -fsSI https://docs.eblu.me/ # public
|
||||
curl -fsSI https://docs.eblu.me/explanation/agent-change-process # clean URL → .html fallback
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ Personal resume/CV served as a static HTML page with PDF download, built from YA
|
|||
| **Public URL** | `cv.eblu.me` (via [[flyio-proxy]]) |
|
||||
| **Private URL** | `cv.ops.eblu.me` (Caddy on indri) |
|
||||
| **Deployment** | Ansible role `cv` on indri (no daemon — Caddy serves files directly) |
|
||||
| **Content dir** | `~/cv/content/` on indri |
|
||||
| **Content dir** | `~/blumeops/cv/content/` on indri |
|
||||
| **Source repo** | `forge.eblu.me/eblume/cv` (private, not mirrored to GitHub) |
|
||||
| **Content packages** | `forge.eblu.me/eblume/-/packages` (generic package `cv`) |
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ Migrated from minikube to indri-native on 2026-04-29 (see [[cv-on-indri]]).
|
|||
1. **Source**: `resume.yaml` (content) + `template.html` (Jinja2) + `style.css` in the cv repo
|
||||
2. **Build**: `render.py` (uv script runner) generates `index.html`; WeasyPrint generates `resume.pdf`
|
||||
3. **Release**: Dagger `build` function packages `index.html`, `style.css`, `resume.pdf` into a tarball, uploaded to Forgejo generic packages
|
||||
4. **Deploy**: ansible role downloads the tarball into `~/cv/content/` on indri; Caddy serves the directory directly
|
||||
4. **Deploy**: ansible role downloads the tarball into `~/blumeops/cv/content/` on indri; Caddy serves the directory directly
|
||||
|
||||
## Endpoints
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ Documentation site built with [Quartz](https://quartz.jzhao.xyz/).
|
|||
| **Public URL** | https://docs.eblu.me (via [[flyio-proxy]]) |
|
||||
| **Private URL** | `docs.ops.eblu.me` (Caddy on indri) |
|
||||
| **Deployment** | Ansible role `docs` on indri (no daemon — Caddy serves files directly) |
|
||||
| **Content dir** | `~/docs/content/` on indri |
|
||||
| **Content dir** | `~/blumeops/docs/content/` on indri |
|
||||
| **Source** | `docs/` directory in blumeops repo |
|
||||
| **Build** | Forgejo workflow `build-blumeops.yaml` |
|
||||
|
||||
|
|
@ -28,7 +28,7 @@ Migrated from minikube to indri-native on 2026-04-29 (see [[docs-on-indri]]).
|
|||
|
||||
1. **Source**: Markdown files in `docs/` with Obsidian-compatible wiki-links
|
||||
2. **Build**: `Build BlumeOps` Forgejo workflow runs towncrier + Quartz, uploads tarball as a release asset, and bumps `docs_version` in the ansible role
|
||||
3. **Deploy**: ansible role downloads the tarball into `~/docs/content/` on indri; Caddy serves the directory directly with Quartz-style `try_files` (path → path/ → path.html → 404.html)
|
||||
3. **Deploy**: ansible role downloads the tarball into `~/blumeops/docs/content/` on indri; Caddy serves the directory directly with Quartz-style `try_files` (path → path/ → path.html → 404.html)
|
||||
|
||||
## Configuration
|
||||
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ services:
|
|||
current-version: "1.0.3"
|
||||
upstream-source: https://forge.eblu.me/eblume/cv
|
||||
notes: >-
|
||||
Static tarball downloaded by ansible/roles/cv into ~/cv/content on indri;
|
||||
Static tarball downloaded by ansible/roles/cv into ~/blumeops/cv/content on indri;
|
||||
served directly by Caddy (kind=static). Migrated from minikube 2026-04-29.
|
||||
Review build deps (WeasyPrint, Jinja2) in source repo on upstream review.
|
||||
|
||||
|
|
@ -236,7 +236,7 @@ services:
|
|||
current-version: "1.28.2"
|
||||
upstream-source: https://forge.eblu.me/eblume/blumeops/releases
|
||||
notes: >-
|
||||
Quartz-built tarball downloaded by ansible/roles/docs into ~/docs/content
|
||||
Quartz-built tarball downloaded by ansible/roles/docs into ~/blumeops/docs/content
|
||||
on indri; served directly by Caddy (kind=static, try_html). Migrated from
|
||||
minikube 2026-04-29. current-version still tracks the legacy quartz/nginx
|
||||
base; will switch to the docs release tag (e.g. v1.16.0) once the dead
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue