CV (Resume)
Personal resume/CV served as a static HTML page with PDF download, built from YAML source via Jinja2 and WeasyPrint.
Quick Reference
| Property | Value |
|---|---|
| URL | cv.ops.eblu.me (tailnet only, via caddy) |
| Namespace | cv |
| Container | registry.ops.eblu.me/blumeops/cv:v1.0.0 |
| Source repo | forge.ops.eblu.me/eblume/cv (private, not mirrored to GitHub) |
| Content packages | forge.ops.eblu.me/eblume/-/packages (generic package cv) |
| ArgoCD App | cv |
Architecture
- Source:
resume.yaml(content) +template.html(Jinja2) +style.cssin the cv repo - Build:
render.py(uv script runner) generatesindex.html; WeasyPrint generatesresume.pdf - Release: Dagger
buildfunction packagesindex.html,style.css,resume.pdfinto a tarball, uploaded to Forgejo generic packages - Deploy: nginx container downloads the tarball at startup via
CV_RELEASE_URLenv var
Endpoints
| Path | Description |
|---|---|
/ | Resume HTML page |
/resume.pdf | PDF download (Content-Disposition: attachment) |
/healthz | Health check (200 OK) |
Configuration
Key files (blumeops):
containers/cv/Dockerfile— nginx:alpine containercontainers/cv/start.sh— tarball download + extractioncontainers/cv/default.conf— nginx config (gzip, caching, PDF headers)argocd/manifests/cv/deployment.yaml—CV_RELEASE_URLenv varargocd/apps/cv.yaml— ArgoCD Application
Key files (cv repo):
resume.yaml— Resume content (YAML)template.html— Jinja2 HTML templatestyle.css— CSS with screen/print media queriesrender.py— uv script runner (PEP 723) that renders YAML → HTMLsrc/cv_ci/main.py— Dagger pipeline (alpine + uv + WeasyPrint).forgejo/workflows/cv-release.yaml— Release workflow
Secrets
| Secret | Repo | Source | Description |
|---|---|---|---|
FORGE_TOKEN | cv | 1Password (via Ansible) | Forgejo API token for package uploads |
Provisioned via forgejo_actions_secrets Ansible role. See create-release-artifact-workflow.
Related
- docs — Similar architecture (nginx container + content tarball)
- caddy — Reverse proxy for
cv.ops.eblu.me - create-release-artifact-workflow — How to set up release artifact workflows
- deploy-k8s-service — General k8s deployment guide