CI/CD
Comportement actuel des GitHub Actions et des déploiements.
Pipelines
Les workflows GitHub Actions vivent dans .github/workflows.
ci.yml
Jobs:
Lint & Format Check:bun run checkTypeScript Check:bun run docs:generatepuisbunx tsc --noEmitSecurity Audit:bun run auditetbun run audit:dashboardDocs Integrity: vérification des liens docs et de la synchronisation LLM
CI est la barrière qualité des pull requests. Elle valide le formatage, la parité des docs générées, la sûreté TypeScript, les audits sécurité et l'intégrité documentaire avant merge.
coolify-deploy.yml
- S'exécute après la réussite de
CI/CD Pipelinesur un push versmain. - Peut aussi être lancé manuellement avec
workflow_dispatch; l'entréeforcereconstruit les images Docker sans le cache GitHub Buildx avant de déployer. - Construit des images Docker immuables pour l'app et le worker sur le runner
Docker Linux ARM64 auto-hébergé, cible
linux/arm64pour la VM Mac mini, pousse les images vers GHCR, puis laisse le runner auto-hébergé privé faire tirer ces images par la VM Coolify avant de déclencher le déploiement. - Utilise le runner auto-hébergé dédié au dépôt, installé sur le Mac mini avec
le label
yayaw-coolify, pour les étapes API Coolify et SSH VM. Coolify reste ainsi accessible uniquement depuis le réseau privé Mac/Tailscale. - Utilise l'environnement GitHub
productionet les secretsCOOLIFY_URL,COOLIFY_API_TOKENetCOOLIFY_APPLICATION_UUID. L'environnement production stocke aussi les valeurs de compilationNEXT_PUBLIC_*,BETTER_AUTH_SECRETetDATABASE_URLnécessaires ànext build. - Sérialise les déploiements avec un groupe de concurrence dédié et interroge Coolify jusqu'à la fin ou l'échec du déploiement.
- Lance le service Compose
migratedans le réseau Coolify/Docker avant le démarrage de l'app et du worker, afin que la synchronisation de schémadrizzle-kit push --forceet le seed atteignent les noms de services internes commepostgres. - Smoke-teste la production après le signal de fin Coolify. Le test vérifie que
/api/healthexpose le SHA mergé, quehttps://yayaw.app/frrépond et que les pages françaises Conditions d'utilisation et Politique de confidentialité rendent le contenu juridique lié à la page sans fuite de texte d'exemple de section réutilisable. vercel.jsondésactive les déploiements Git Vercel avecgit.deploymentEnabled: false; déconnectez aussi l'intégration Git Vercel dans le dashboard si Vercel ne doit plus publier de statuts PR externes.
coolify-rolling-deploy.yml
- Est un workflow de migration manuel, development d'abord; il ne remplace pas le déploiement Compose automatique avant validation des nouvelles ressources Coolify.
- Construit des images app et worker immuables avec une clé Server Actions partagée et un identifiant de déploiement Next.js dérivé du SHA du commit.
- Tire les images avec retry, vérifie le journal de migrations Drizzle et applique les migrations versionnées pendant que l'ancienne image web continue de servir.
- Met à jour une Application Coolify Docker Image avec healthchecks et sans port
hôte, puis vérifie
/api/readydepuis l'origine publique. - Restaure le nom et le tag de l'image précédente si le déploiement ou le smoke public échoue. Les migrations restent appliquées et doivent donc être compatibles expand/contract.
Vercel possède le cycle build/deploy production quand le fournisseur Vercel est
utilisé. Coolify possède les déploiements production auto-hébergés lorsque
coolify-deploy.yml est configuré: après la CI sur main, GitHub Actions
construit et pousse les images Docker du commit mergé vers GHCR, les fait tirer
par le serveur Coolify, met à jour YAYAW_APP_IMAGE et YAYAW_WORKER_IMAGE,
puis demande à Coolify de lancer le déploiement Compose sans reconstruire sur la
VM de production.
Le déploiement Compose auto-hébergé possède la synchronisation de schéma et le
seed de production via son service migrate. Les changements de schéma doivent
rester rétrocompatibles avec l'app actuellement déployée et le prochain
déploiement.
YAYAW_APP_IMAGE et YAYAW_WORKER_IMAGE sont des variables Coolify à la fois
runtime et build-time. Docker Compose interpole les valeurs image: pendant la
préparation du déploiement Coolify, avant le démarrage des conteneurs.
Les déploiements de développement des pull requests utilisent le même chemin
d'images précompilées après la CI. Le workflow force la branche technique
coolify/development du dépôt vers le SHA de tête de la pull request, pointe
l'app Coolify partagée sur cette branche stable et garde la ref PR d'origine
dans les métadonnées de déploiement. Coolify peut ainsi cloner le dépôt même si
GitHub supprime la branche source juste après le merge. Les workflows utilisent
GHCR comme transport d'images au lieu des artifacts GitHub Actions; les
déploiements de développement et production ne dépendent donc pas du quota de
stockage artifacts.
Vercel possède aussi les déploiements de prévisualisation et les commentaires de prévisualisation lorsque le fournisseur hébergé est activé. GitHub Actions ne doit pas ajouter de notifications de déploiement en double pour ce chemin.
Flux De Branche Et Pull Request
Utilisez une branche par tâche:
git checkout main
git pull --ff-only origin main
git checkout -b codex/<task-name>Avant d'ouvrir une PR:
- Gardez le diff limité à la tâche.
- Stagez uniquement les fichiers voulus.
- Commitez avec un résumé court.
- Poussez la branche.
- Ouvrez une draft PR sauf demande explicite de revue prête.
Les fichiers générés sont attendus lorsque leur source change:
AGENTS.mdGEMINI.md.github/copilot-instructions.md- actions serveur Drizzle générées lorsque les schémas changent
- artefacts source Fumadocs lorsque le contenu docs change
Commandes De Parité Locale
bun run check
bun run docs:generate
bun run docs:check-links
bun run docs:check-translations
bun run docs:llm:check
bunx tsc --noEmit
bun run buildPour les travaux facturation, webhooks ou accès au code, lancez aussi:
bun run testPour les changements d'actions générées:
bun run generate:actionsPour les changements de docs assistants:
bun run docs:llm:generateEnvironnements De Déploiement
Vercel et Docker auto-hébergé sont deux cibles supportées. Les variables
d'environnement Vercel doivent être bornées comme Production, Preview ou
Development. Les variables runtime auto-hébergées vivent dans le magasin de
secrets de l'orchestrateur ou dans le fichier non suivi .env.self-host utilisé
par docker-compose.self-host.yml. Voir
Configuration de l'environnement de déploiement
et Auto-hébergement pour la récupération des valeurs
fournisseur et les vérifications de déploiement.
Le service Compose auto-hébergé migrate possède la synchronisation de schéma
non interactive drizzle-kit push --force, le seed et la réparation du stockage
dynamic-data déployé pour Coolify. Gardez le DATABASE_URL de l'environnement
GitHub production disponible pour l'évaluation des routes serveur au build
time, mais ne lancez pas un workflow de migration production séparé à côté du
déploiement Compose.
Le flux Coolify avec images précompilées requiert ces secrets ou variables GitHub bornés par environnement:
| Environnement | Nom | Usage |
|---|---|---|
development, production | BETTER_AUTH_SECRET | Requis par le build Docker pour stabiliser l'évaluation des routes Better Auth. |
development, production | DATABASE_URL | URL de base build-time de repli pour l'évaluation des routes serveur. |
development, production | valeurs build NEXT_PUBLIC_* | Configuration publique intégrée au bundle client Next.js. |
development, production | variable NEXT_BUILD_WORKERS | Nombre de workers de build. Défaut: 1 pour stabiliser les builds Docker auto-hébergés. |
development, production | variable NEXT_STATIC_PAGE_GENERATION_TIMEOUT | Timeout de génération statique. Défaut: 180. |
development, production | variables COOLIFY_SERVER_SSH_* ou secret COOLIFY_SERVER_SSH_KEY | Surcharges optionnelles pour charger les images sur la VM Coolify. Les valeurs par défaut du runner Mac mini correspondent au setup SSH local de la VM. |
Les workflows accordent packages: write au job de build d'images et
packages: read au job de déploiement Coolify pour que le GITHUB_TOKEN du
dépôt puisse pousser les images immuables vers GHCR et que le runner
auto-hébergé puisse les tirer sur la VM.
Après modification d'une variable d'environnement Vercel, déclenchez un nouveau
déploiement pour cet environnement. Après modification d'un secret
auto-hébergé, redémarrez les conteneurs app ou worker concernés et vérifiez le
statut de déploiement dans /dashboard/admin.
Sécurité De Merge
L'auto-merge ne s'exécute que lorsque les checks requis ont réussi.
Ne contournez pas les échecs d'intégrité documentaire. Ils signalent généralement:
- un lien interne de documentation cassé
- une modification de
content/llm/llm-source.mdsans régénération des fichiers assistants - des artefacts docs générés obsolètes