Commit Graph
5 Commits
Author SHA1 Message Date
arcodangeandClaude Opus 4.8 47a1b1222f docs(ci): référence la page 6b dans l'index du runbook new-web-app
Ajoute la ligne 06b (CI des apps Bun/Nuxt) à l'index des étapes et bump
Last Updated, conformément à la règle « Comment éditer ce runbook ».

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-12 13:37:18 +02:00
arcodangeandClaude Opus 4.8 cd5618a724 docs(ci): lie l'étape 6 à la nouvelle page 6b (gates Bun/Nuxt)
Ajoute le backlink bidirectionnel vers 06b et une phrase dans le Summary
distinguant ci.yml (gates qualité) des workflows vault.yaml/dockerimage.yaml.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-12 13:36:09 +02:00
arcodangeandClaude Opus 4.8 f5c01da70d docs(ci): capitalise le piège Node 18→20 des apps Bun/Nuxt (page 6b)
Nouvelle page runbook « CI des apps Bun/Nuxt » : le runner par défaut est en
Node 18, or nuxi/nuxt importent styleText de node:util (Node 20+) → la CI casse
au build. Parade tenue (validée sur arcodange/kadans) : container node:20-bookworm
+ Bun via npm. Inclut un ci.yml canonique à copier + les pistes infra runner.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-12 13:31:41 +02:00
arcodangeandClaude Opus 4.7 c00c4cdd5c feat(multi-env): Phase B — make factory machinery env-capable (no activation)
ADR-0002 Phase B. Makes postgres/iac, argocd, and the conventions docs
multi-environment-capable WITHOUT activating any sandbox yet — every app
stays prod-only, so this change is behaviour-neutral:
  - postgres/iac `tofu plan` is a no-op (proven: the elision flatten keys
    are bare app names, db=<app>, role=<app>_role — identical addresses)
  - the argocd apps.yaml render is byte-identical (181→181 lines, diff
    empty) since no app declares `envs`

postgres/iac:
- variables.tf: `applications` becomes set(object({name, envs=optional(["prod"])}))
- main.tf: a `local.app_instances` flatten of applications × envs keyed by the
  elided instance id (env=prod → "<app>"); per-app resources iterate it and
  reference each.key / each.value.{database,role}. For prod-only apps every
  resource address + attribute is unchanged. (main.tf also got a full
  `tofu fmt` pass — the pgbouncer function block reindents 4→2 spaces, which
  is cosmetic; the correctness gate is the CI tofu plan, not the text diff.)
- terraform.tfvars: string entries → { name = "..." } objects.

argocd/templates/apps.yaml:
- after the prod Application, a `range $app_attr.envs` loop renders one extra
  Application per non-prod env: name/namespace `<app>-<env>`, shared repoURL,
  helm.valueFiles [values.yaml, values-<env>.yaml], per-env syncPolicy override.
  Renders nothing while no app sets `envs` → prod render unchanged.

docs:
- doc/runbooks/new-web-app/conventions.md (FR, authoritative): new section
  "Plusieurs environnements pour une même app" — elision rule, suffix rule,
  snake-case owner-role exception, erp/erp-sandbox table, ADR-0002 link.
- vibe/guidebooks/lab-ecosystem/naming-conventions.md (EN mirror): the env
  coordinate section + a "Two sandbox models" section reconciling the
  separate-cluster (ADR-0001, names repeat) vs in-cluster sibling (ADR-0002,
  <env> suffix) strategies; Last Updated bumped; ADR-0002 cross-links.

Activation (erp gets envs=["prod","sandbox"] in postgres tfvars + argocd
values + erp/iac) is Phase D, gated by its own plan review.

Refs ADR-0002 (factory#15). Phase A = tools#2 (merged). Phase C = erp#11 (merged).

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-06-28 16:28:28 +02:00
arcodangeandClaude Opus 4.8 8330d82225 docs(runbooks): add "new web app" setup runbook under doc/runbooks/
Document, as a tree-docs tree, the end-to-end procedure to stand up a new
web application on the Arcodange platform — a mechanic spread across the
factory, tools and app repos with non-trivial ordering dependencies.

Covers: Gitea repo creation (org-secret inheritance), Postgres DB + owner
role (factory/postgres/iac), platform Vault declaration (gitea_cicd_<app>
+ policies, tools/hashicorp-vault/iac), the app Helm chart (VSO dynamic
secrets via pgbouncer), the app Terraform (app_roles module), the CI
workflows (tofu apply + image build, incl. the copy-pasted role pitfall),
and ArgoCD registration (factory/argocd/values.yaml). Adds a naming-
conventions concept page and an ordered checklist.

Wires the legacy doc/adr "setup hello world web app" item and the factory
README to the runbook. New docs live under doc/ (singular) per the PR #8
convention.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-31 17:22:30 +02:00