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_version: "v1.0.3"
|
||||||
cv_release_url: "https://forge.eblu.me/api/packages/eblume/generic/cv/{{ cv_version }}/cv-{{ cv_version }}.tar.gz"
|
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_content_dir: "{{ cv_home }}/content"
|
||||||
cv_version_sentinel: "{{ cv_home }}/.installed-version"
|
cv_version_sentinel: "{{ cv_home }}/.installed-version"
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,6 @@
|
||||||
docs_version: "v1.16.0"
|
docs_version: "v1.16.0"
|
||||||
docs_release_url: "https://forge.eblu.me/eblume/blumeops/releases/download/{{ docs_version }}/docs-{{ docs_version }}.tar.gz"
|
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_content_dir: "{{ docs_home }}/content"
|
||||||
docs_version_sentinel: "{{ docs_home }}/.installed-version"
|
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 |
|
| Concern | Path / detail |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Content dir | `/Users/erichblume/cv/content/` |
|
| Content dir | `/Users/erichblume/blumeops/cv/content/` |
|
||||||
| Version sentinel | `/Users/erichblume/cv/.installed-version` |
|
| Version sentinel | `/Users/erichblume/blumeops/cv/.installed-version` |
|
||||||
| Caddy entry | `cv` service in `ansible/roles/caddy/defaults/main.yml` (`kind: static`) |
|
| Caddy entry | `cv` service in `ansible/roles/caddy/defaults/main.yml` (`kind: static`) |
|
||||||
| Public URL | `https://cv.eblu.me` (via [[flyio-proxy]]) |
|
| Public URL | `https://cv.eblu.me` (via [[flyio-proxy]]) |
|
||||||
| Private URL | `https://cv.ops.eblu.me` (Caddy on indri) |
|
| Private URL | `https://cv.ops.eblu.me` (Caddy on indri) |
|
||||||
|
|
@ -44,8 +44,8 @@ Two paths:
|
||||||
## Verify
|
## Verify
|
||||||
|
|
||||||
```fish
|
```fish
|
||||||
ssh indri 'cat ~/cv/.installed-version'
|
ssh indri 'cat ~/blumeops/cv/.installed-version'
|
||||||
ssh indri 'ls -la ~/cv/content/'
|
ssh indri 'ls -la ~/blumeops/cv/content/'
|
||||||
curl -fsSI https://cv.ops.eblu.me/ # private
|
curl -fsSI https://cv.ops.eblu.me/ # private
|
||||||
curl -fsSI https://cv.eblu.me/ # public
|
curl -fsSI https://cv.eblu.me/ # public
|
||||||
curl -fsSI https://cv.eblu.me/resume.pdf | grep -i disposition
|
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 |
|
| Concern | Path / detail |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Content dir | `/Users/erichblume/docs/content/` |
|
| Content dir | `/Users/erichblume/blumeops/docs/content/` |
|
||||||
| Version sentinel | `/Users/erichblume/docs/.installed-version` |
|
| Version sentinel | `/Users/erichblume/blumeops/docs/.installed-version` |
|
||||||
| Caddy entry | `docs` service in `ansible/roles/caddy/defaults/main.yml` (`kind: static`, `try_html: true`) |
|
| 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]]) |
|
| Public URL | `https://docs.eblu.me` (via [[flyio-proxy]]) |
|
||||||
| Private URL | `https://docs.ops.eblu.me` (Caddy on indri) |
|
| 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
|
## Verify
|
||||||
|
|
||||||
```fish
|
```fish
|
||||||
ssh indri 'cat ~/docs/.installed-version'
|
ssh indri 'cat ~/blumeops/docs/.installed-version'
|
||||||
ssh indri 'ls ~/docs/content/'
|
ssh indri 'ls ~/blumeops/docs/content/'
|
||||||
curl -fsSI https://docs.ops.eblu.me/ # private
|
curl -fsSI https://docs.ops.eblu.me/ # private
|
||||||
curl -fsSI https://docs.eblu.me/ # public
|
curl -fsSI https://docs.eblu.me/ # public
|
||||||
curl -fsSI https://docs.eblu.me/explanation/agent-change-process # clean URL → .html fallback
|
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]]) |
|
| **Public URL** | `cv.eblu.me` (via [[flyio-proxy]]) |
|
||||||
| **Private URL** | `cv.ops.eblu.me` (Caddy on indri) |
|
| **Private URL** | `cv.ops.eblu.me` (Caddy on indri) |
|
||||||
| **Deployment** | Ansible role `cv` on indri (no daemon — Caddy serves files directly) |
|
| **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) |
|
| **Source repo** | `forge.eblu.me/eblume/cv` (private, not mirrored to GitHub) |
|
||||||
| **Content packages** | `forge.eblu.me/eblume/-/packages` (generic package `cv`) |
|
| **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
|
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`
|
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
|
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
|
## Endpoints
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ Documentation site built with [Quartz](https://quartz.jzhao.xyz/).
|
||||||
| **Public URL** | https://docs.eblu.me (via [[flyio-proxy]]) |
|
| **Public URL** | https://docs.eblu.me (via [[flyio-proxy]]) |
|
||||||
| **Private URL** | `docs.ops.eblu.me` (Caddy on indri) |
|
| **Private URL** | `docs.ops.eblu.me` (Caddy on indri) |
|
||||||
| **Deployment** | Ansible role `docs` on indri (no daemon — Caddy serves files directly) |
|
| **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 |
|
| **Source** | `docs/` directory in blumeops repo |
|
||||||
| **Build** | Forgejo workflow `build-blumeops.yaml` |
|
| **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
|
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
|
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
|
## Configuration
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -226,7 +226,7 @@ services:
|
||||||
current-version: "1.0.3"
|
current-version: "1.0.3"
|
||||||
upstream-source: https://forge.eblu.me/eblume/cv
|
upstream-source: https://forge.eblu.me/eblume/cv
|
||||||
notes: >-
|
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.
|
served directly by Caddy (kind=static). Migrated from minikube 2026-04-29.
|
||||||
Review build deps (WeasyPrint, Jinja2) in source repo on upstream review.
|
Review build deps (WeasyPrint, Jinja2) in source repo on upstream review.
|
||||||
|
|
||||||
|
|
@ -236,7 +236,7 @@ services:
|
||||||
current-version: "1.28.2"
|
current-version: "1.28.2"
|
||||||
upstream-source: https://forge.eblu.me/eblume/blumeops/releases
|
upstream-source: https://forge.eblu.me/eblume/blumeops/releases
|
||||||
notes: >-
|
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
|
on indri; served directly by Caddy (kind=static, try_html). Migrated from
|
||||||
minikube 2026-04-29. current-version still tracks the legacy quartz/nginx
|
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
|
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