[Factory](../../../README.md) > [Doc](../../README.md) > [Runbooks](../README.md) > [Nouvelle application web](README.md) > **8. Checklist** # 8. Checklist & Definition of Done > **Status:** ✅ Active > **Upstream:** [7. Enregistrement ArgoCD](07-argocd-register.md) > **Related:** [README du runbook](README.md) · [Conventions de nommage](conventions.md) --- ## Summary Récapitulatif imprimable de toute la procédure, dans l'ordre des dépendances. À cocher au fur et à mesure ; chaque ligne renvoie à sa page détaillée. ## Ordre des dépendances ``` [01] Dépôt Gitea ──┬──> [02] base + _role ──┐ └──> [03] gitea_cicd_ ────┤ (02 et 03 avant 05) ▼ [04+05+06] chart/ + iac/ + .gitea/ ── push → CI ▼ [07] ArgoCD ── déploie ── Runtime ``` ## Checklist **Préparation** - [ ] Nom `` choisi (kebab-case minuscule), cohérent partout — [conventions](conventions.md) **1 · Dépôt** — [détails](01-gitea-repo.md) - [ ] Dépôt `arcodange-org/` créé (hérite `HOMELAB_CA_CERT`, `vault_oauth__sh_b64`, `PACKAGES_TOKEN`) - [ ] Squelette en place : `chart/`, `iac/`, `.gitea/workflows/`, `.gitignore` (+ `Dockerfile` si image maison) **2 · Base de données** — [détails](02-database.md) - [ ] `""` ajouté à `factory/postgres/iac/terraform.tfvars` - [ ] CI `factory` « Postgres » verte → base `` + rôle `_role` créés **3 · Vault plateforme** — [détails](03-vault-platform.md) - [ ] `{ name = "" }` ajouté à `tools/hashicorp-vault/iac/terraform.tfvars` - [ ] CI `tools` « Vault » verte → `gitea_cicd_`, policies `` / `-ops` créées > [!IMPORTANT] > Ne pas pousser le `iac/` de l'app (étape 5/6) tant que **2 et 3** ne sont pas appliquées : la CI Terraform de l'app en dépend. **4 · Chart Helm** — [détails](04-helm-chart.md) - [ ] `Chart.yaml` (`name: `), `values.yaml` (image, ingress, `serviceAccount.create: true`) - [ ] `config.yaml` pointe `pgbouncer.tools` / base `` - [ ] `vaultauth.yaml` (role ``), `vaultdynamicsecret.yaml` (`creds/`), `vaultsecret.yaml` (`kvv2//config`) - [ ] Ingress choisi : interne `.lab` (websecure + letsencrypt + `localIp@file`) ou public `.fr` (web + crowdsec + `nodeSelector pi1`) **5 · Terraform de l'app** — [détails](05-app-terraform.md) - [ ] `providers.tf` : role `gitea_cicd_` - [ ] `backend.tf` : prefix `/main` - [ ] `main.tf` : `module "app_roles"` (`name = ""`) + secrets `kvv2//config` **6 · Workflows CI** — [détails](06-ci-workflows.md) - [ ] `vault.yaml` : `role: gitea_cicd_` **aligné** (pas un reliquat copié-collé) ⚠️ - [ ] `dockerimage.yaml` + `Dockerfile` (si image maison) → push `gitea.arcodange.lab/arcodange-org/` - [ ] Push → CI « vault » verte (`creds/` + rôle K8s `` + KV créés), CI « image » verte **7 · ArgoCD** — [détails](07-argocd-register.md) - [ ] `` ajouté sous `gitea_applications` dans `factory/argocd/values.yaml` (+ annotations image-updater si voulu) - [ ] Commit sur `main` → `Application` `` apparaît dans ArgoCD ## Definition of Done - [ ] `Application` ArgoCD `` = **Synced** + **Healthy** - [ ] Pod `Running` dans le namespace `` (SA ``) - [ ] Secret K8s `vso-db-credentials` présent et **roté** par VSO (TTL ~1 h) ; le pod redémarre à la rotation - [ ] L'app répond sur son ingress (`.arcodange.lab` ou `.arcodange.fr`) - [ ] Connexion DB OK via `pgbouncer.tools` avec un user dynamique héritant de `_role` ## Related - [README du runbook](README.md) — vue d'ensemble + carte de bout en bout. - [Conventions de nommage](conventions.md) — la cohérence du nom ``, source de la plupart des ratés.