Replace 'ext' tag with 'int-dev'
All checks were successful
build-and-push-int-dev / build_push (push) Successful in 10s

This commit is contained in:
Omar Oughriss 2025-09-22 15:01:49 +02:00
parent 2e1580e400
commit 6a51281d00
17 changed files with 35 additions and 35 deletions

View File

@ -8,7 +8,7 @@
}, },
"ci": { "ci": {
"trigger_commit_prefix": "ci: docker_tag=", "trigger_commit_prefix": "ci: docker_tag=",
"default_tag": "ext", "default_tag": "int-dev",
"branch": "dev4" "branch": "dev4"
} }
} }

View File

@ -5,9 +5,9 @@
- Redémarrer le terminal avant chaque utilisation si nécessaire. - Redémarrer le terminal avant chaque utilisation si nécessaire.
- Respect strict des règles de lint Markdown. - Respect strict des règles de lint Markdown.
- Ne pas utiliser Kubernetes pour ce projet. - Ne pas utiliser Kubernetes pour ce projet.
- CI: déclencher via commit `ci: docker_tag=ext` sur `dev4`. - CI: déclencher via commit `ci: docker_tag=int-dev` sur `dev4`.
- Front Next.js: variables `NEXT_PUBLIC_*` alignées avec `.env.example`. - Front Next.js: variables `NEXT_PUBLIC_*` alignées avec `.env.example`.
- Docker: build multi-stage, `ext` comme image de déploiement. - Docker: build multi-stage, `int-dev` comme image de déploiement.
- Nginx: local (pas Docker), confs sous `../lecoffre_node/conf/nginx/`. - Nginx: local (pas Docker), confs sous `../lecoffre_node/conf/nginx/`.
- Docs et tests: maintenir `docs/` et `tests/` à chaque modification. - Docs et tests: maintenir `docs/` et `tests/` à chaque modification.
- Ne pas exposer de secrets côté front (`SIGNER_API_KEY` etc.). - Ne pas exposer de secrets côté front (`SIGNER_API_KEY` etc.).

View File

@ -42,7 +42,7 @@
- Externaliser au maximum les variables denvironnement. - Externaliser au maximum les variables denvironnement.
- Toujours utiliser une clé SSH pour cloner les dépôts. - Toujours utiliser une clé SSH pour cloner les dépôts.
- Monter en version les dépôts au début du travail. - Monter en version les dépôts au début du travail.
- Pousser les tags docker `ext` via la CI sur `git.4nkweb.com`. - Pousser les tags docker `int-dev` via la CI sur `git.4nkweb.com`.
- Corriger systématiquement les problèmes, même mineurs, sans contournement. - Corriger systématiquement les problèmes, même mineurs, sans contournement.
## Scripts (règles critiques) ## Scripts (règles critiques)
@ -56,7 +56,7 @@
- Installer en arrière-plan dans les images Docker : - Installer en arrière-plan dans les images Docker :
`curl, git, sed, awk, nc, wget, jq, telnet, tee, wscat, ping, npm (dernière version)` `curl, git, sed, awk, nc, wget, jq, telnet, tee, wscat, ping, npm (dernière version)`
- Appliquer à tous les Dockerfiles et `docker-compose.yml`. - Appliquer à tous les Dockerfiles et `docker-compose.yml`.
- N'utilise pas les version test ou dev ou ext-dev mais toujours les version ext, relance leur compilation si nécessaire - N'utilise pas les version test ou dev ou int-dev-dev mais toujours les version int-dev, relance leur compilation si nécessaire
## Fichiers de configuration (règles critiques) ## Fichiers de configuration (règles critiques)
- Vérifier lécriture effective après chaque modification. - Vérifier lécriture effective après chaque modification.

View File

@ -1,8 +1,8 @@
## v0.1.1 ## v0.1.1
- Ajout d'une image Docker de production "ext" (Next.js `next start`) lisant les URLs d'API via variables d'environnement, évitant toute référence à `localhost`. - Ajout d'une image Docker de production "int-dev" (Next.js `next start`) lisant les URLs d'API via variables d'environnement, évitant toute référence à `localhost`.
- Remplacement d'URLs codées en dur dans l'écran de connexion email par l'utilisation de `FrontendVariables` et des `NEXT_PUBLIC_*`. - Remplacement d'URLs codées en dur dans l'écran de connexion email par l'utilisation de `FrontendVariables` et des `NEXT_PUBLIC_*`.
- Documentation `docs/ext.md` ajoutée (build, run, push, variables supportées). - Documentation `docs/int-dev.md` ajoutée (build, run, push, variables supportées).
## v0.1.2 ## v0.1.2
@ -15,7 +15,7 @@
- IdNot: appel backend changé en POST `/api/v1/idnot/auth` avec `{ code }` dans le corps (évite erreurs 502 proxy sur URL longue). - IdNot: appel backend changé en POST `/api/v1/idnot/auth` avec `{ code }` dans le corps (évite erreurs 502 proxy sur URL longue).
- Documentation et tests mis à jour. - Documentation et tests mis à jour.
- Rappel déploiement: builder et pousser limage tagguée `ext` pour récupération par `lecoffre_node`. - Rappel déploiement: builder et pousser limage tagguée `int-dev` pour récupération par `lecoffre_node`.
- Sous-chemin Next activé: `basePath: '/lecoffre'`. - Sous-chemin Next activé: `basePath: '/lecoffre'`.
- Normalisation SSR du `targetOrigin` de liframe sur lorigine de `NEXT_PUBLIC_4NK_URL`. - Normalisation SSR du `targetOrigin` de liframe sur lorigine de `NEXT_PUBLIC_4NK_URL`.

View File

@ -116,8 +116,8 @@ ENV NEXT_PUBLIC_BACK_API_PROTOCOL=${NEXT_PUBLIC_BACK_API_PROTOCOL} \
RUN --mount=type=cache,target=/leCoffre-front/.next/cache npm run build RUN --mount=type=cache,target=/leCoffre-front/.next/cache npm run build
# --- Image d'exécution "ext" # --- Image d'exécution "int-dev"
FROM debian:bookworm-slim AS ext FROM debian:bookworm-slim AS int-dev
WORKDIR /leCoffre-front WORKDIR /leCoffre-front
# Installation des dépendances de base # Installation des dépendances de base

View File

@ -111,7 +111,7 @@ Le Dockerfile utilise un build multi-stage avec 3 cibles:
1. **deps**: Installation des dépendances avec support SSH pour git.4nkweb.com 1. **deps**: Installation des dépendances avec support SSH pour git.4nkweb.com
2. **development**: Image de développement avec hot-reload 2. **development**: Image de développement avec hot-reload
3. **builder**: Build de production 3. **builder**: Build de production
4. **ext**: Image de production finale 4. **int-dev**: Image de production finale
### Variables d'environnement Docker ### Variables d'environnement Docker

View File

@ -2,7 +2,7 @@
### Périmètre ### Périmètre
Front Next.js `lecoffre-front` (Next 14, TypeScript), build multiétapes et image `ext` runtime. Front Next.js `lecoffre-front` (Next 14, TypeScript), build multiétapes et image `int-dev` runtime.
### Stack ### Stack
@ -15,7 +15,7 @@ Front Next.js `lecoffre-front` (Next 14, TypeScript), build multiétapes et i
- Scripts: `dev`, `build` (telemetry off, `--no-lint`), `start`, `lint`, `format`. - Scripts: `dev`, `build` (telemetry off, `--no-lint`), `start`, `lint`, `format`.
- `next.config.js`: `output: 'standalone'`, `basePath: '/lecoffre'`, `ignoreBuildErrors: true`. - `next.config.js`: `output: 'standalone'`, `basePath: '/lecoffre'`, `ignoreBuildErrors: true`.
- Docker multiétapes: `deps` (npm ci), `development` (npm run dev), `builder` (npm run build), `ext` (runtime node:19alpine, `server.js`). - Docker multiétapes: `deps` (npm ci), `development` (npm run dev), `builder` (npm run build), `int-dev` (runtime node:19alpine, `server.js`).
### Variables denvironnement ### Variables denvironnement

View File

@ -1,7 +1,7 @@
# Architecture - LeCoffre Front # Architecture - LeCoffre Front
## Composants ## Composants
- Next.js (branche `ext`). - Next.js (branche `int-dev`).
- Intègre `ihm_client` via iframe. - Intègre `ihm_client` via iframe.
## Dépendances ## Dépendances

View File

@ -1,7 +1,7 @@
# Déploiement - LeCoffre Front # Déploiement - LeCoffre Front
## Préparation ## Préparation
- Branche `ext`. - Branche `int-dev`.
- `NEXT_PUBLIC_*` dans `lecoffre_node/.env.master`. - `NEXT_PUBLIC_*` dans `lecoffre_node/.env.master`.
## Déploiement (orchestrateur) ## Déploiement (orchestrateur)
@ -17,4 +17,4 @@ cd /home/debian/4NK_env/lecoffre_node
## Règles ## Règles
- Pas de compose direct. - Pas de compose direct.
- Push `ext` sans CI pour docs. - Push `int-dev` sans CI pour docs.

View File

@ -1,7 +1,7 @@
# Installation - LeCoffre Front # Installation - LeCoffre Front
## Prérequis ## Prérequis
- Dépôts sous `/home/debian/4NK_env` (branche `ext`). - Dépôts sous `/home/debian/4NK_env` (branche `int-dev`).
- Docker/Compose. - Docker/Compose.
- Variables `NEXT_PUBLIC_*` dans `lecoffre_node/.env.master`. - Variables `NEXT_PUBLIC_*` dans `lecoffre_node/.env.master`.
@ -23,4 +23,4 @@ cd /home/debian/4NK_env/lecoffre_node
- Appels API vers `/api/` OK. - Appels API vers `/api/` OK.
## Notes ## Notes
- CI via tag `ext`. - CI via tag `int-dev`.

View File

@ -42,7 +42,7 @@ NEXT_PUBLIC_DOCAPOSTE_API_URL=https://api.docaposte.com
## Déploiement et infrastructure ## Déploiement et infrastructure
### Docker ### Docker
- **Multi-stage build** avec 4 cibles (deps/development/builder/ext) - **Multi-stage build** avec 4 cibles (deps/development/builder/int-dev)
- **Sécurité**: Utilisateur non-root, support SSH agent - **Sécurité**: Utilisateur non-root, support SSH agent
- **Optimisation**: Cache npm, build standalone Next.js - **Optimisation**: Cache npm, build standalone Next.js

View File

@ -58,7 +58,7 @@ Analyse synthétique de `lecoffre-front` (Next.js) : périmètre, dépendances,
- Exposition de nombreuses variables `NEXT_PUBLIC_*` via `env`, `publicRuntimeConfig` et `serverRuntimeConfig` - Exposition de nombreuses variables `NEXT_PUBLIC_*` via `env`, `publicRuntimeConfig` et `serverRuntimeConfig`
### Docker (multistage) ### Docker (multistage)
- Étapes: `deps` (install), `development` (dev), `builder` (build), `ext` (runtime) - Étapes: `deps` (install), `development` (dev), `builder` (build), `int-dev` (runtime)
- BuildKit SSH pour `le-coffre-resources` (clé non copiée dans limage) - BuildKit SSH pour `le-coffre-resources` (clé non copiée dans limage)
- Port runtime 3000; utilisateur nonroot `lecoffreuser` - Port runtime 3000; utilisateur nonroot `lecoffreuser`

View File

@ -27,7 +27,7 @@ Cette documentation décrit le pipeline CI/CD tel quil peut être déduit des
### Image, registre et version ### Image, registre et version
- **Registre**: Docker registry interne sur `git.4nkweb.com`. - **Registre**: Docker registry interne sur `git.4nkweb.com`.
- **Tagging**: contrôlé par la CI via le message de commit (préfixe `ci: docker_tag=<valeur>`), sinon fallback `dev-test`. La branche peut être utilisée comme tag par défaut selon la CI. Recommandation: utiliser un tag non versionné `ext`. - **Tagging**: contrôlé par la CI via le message de commit (préfixe `ci: docker_tag=<valeur>`), sinon fallback `dev-test`. La branche peut être utilisée comme tag par défaut selon la CI. Recommandation: utiliser un tag non versionné `int-dev`.
### Déploiement Kubernetes (extrait de `temp.yaml`) ### Déploiement Kubernetes (extrait de `temp.yaml`)
@ -100,14 +100,14 @@ Notes:
- Gérer explicitement les tags et le changelog en CI. - Gérer explicitement les tags et le changelog en CI.
- Déployer via Helm chart versionné, avec valeurs par environnement (`values.{env}.yaml`). - Déployer via Helm chart versionné, avec valeurs par environnement (`values.{env}.yaml`).
### Validation de l'image Docker « ext » (intégration des variables) ### Validation de l'image Docker « int-dev » (intégration des variables)
- Objectif: vérifier que les variables `NEXT_PUBLIC_*` sont bien injectées dans l'image construite par la CI. - Objectif: vérifier que les variables `NEXT_PUBLIC_*` sont bien injectées dans l'image construite par la CI.
- Commande: - Commande:
``` ```
docker pull git.4nkweb.com/4nk/lecoffre-front:ext docker pull git.4nkweb.com/4nk/lecoffre-front:int-dev
docker run --rm git.4nkweb.com/4nk/lecoffre-front:ext sh -lc "env | grep '^NEXT_PUBLIC_' | sort" docker run --rm git.4nkweb.com/4nk/lecoffre-front:int-dev sh -lc "env | grep '^NEXT_PUBLIC_' | sort"
``` ```
- Attendus clés: - Attendus clés:

View File

@ -1,4 +1,4 @@
### Image Docker "ext" (Next.js) variables d'environnement et publication ### Image Docker "int-dev" (Next.js) variables d'environnement et publication
Cette image exécute l'app Next.js en mode production via `next start` et lit la configuration via les variables d'environnement exposées (préfixe `NEXT_PUBLIC_`). L'objectif est d'éviter toute dépendance à `localhost` dans les appels API : les URLs sont construites dynamiquement côté front à partir de ces variables. Cette image exécute l'app Next.js en mode production via `next start` et lit la configuration via les variables d'environnement exposées (préfixe `NEXT_PUBLIC_`). L'objectif est d'éviter toute dépendance à `localhost` dans les appels API : les URLs sont construites dynamiquement côté front à partir de ces variables.
@ -27,13 +27,13 @@ Notes:
- Le front initialise ses variables via `next.config.js` et `_app.tsx`, ce qui alimente `FrontendVariables`. Les appels API utilisent ces valeurs et n'emploient pas `localhost`. - Le front initialise ses variables via `next.config.js` et `_app.tsx`, ce qui alimente `FrontendVariables`. Les appels API utilisent ces valeurs et n'emploient pas `localhost`.
- Les valeurs doivent être passées au conteneur au runtime (`docker run -e ...` ou manifest K8s via `env:`/`secretRef`). - Les valeurs doivent être passées au conteneur au runtime (`docker run -e ...` ou manifest K8s via `env:`/`secretRef`).
#### Construction de l'image (cible "ext") #### Construction de l'image (cible "int-dev")
Prérequis: Docker BuildKit activé et agent SSH opérationnel pour cloner `le-coffre-resources` depuis `git.4nkweb.com`. Prérequis: Docker BuildKit activé et agent SSH opérationnel pour cloner `le-coffre-resources` depuis `git.4nkweb.com`.
1. `cd /home/debian/lecoffre-front` 1. `cd /home/debian/lecoffre-front`
2. `export DOCKER_BUILDKIT=1` 2. `export DOCKER_BUILDKIT=1`
3. `docker build --target ext --ssh default -t lecoffre/front:ext -f /home/debian/lecoffre-front/Dockerfile /home/debian/lecoffre-front` 3. `docker build --target int-dev --ssh default -t lecoffre/front:int-dev -f /home/debian/lecoffre-front/Dockerfile /home/debian/lecoffre-front`
#### Exécution locale (validation) #### Exécution locale (validation)
@ -48,11 +48,11 @@ docker run --rm -p 3000:3000 \
-e NEXT_PUBLIC_BACK_API_VERSION=v1 \ -e NEXT_PUBLIC_BACK_API_VERSION=v1 \
-e NEXT_PUBLIC_FRONT_APP_HOST=https://app.example.com \ -e NEXT_PUBLIC_FRONT_APP_HOST=https://app.example.com \
-e NEXT_PUBLIC_4NK_URL=https://app.example.com \ -e NEXT_PUBLIC_4NK_URL=https://app.example.com \
lecoffre/front:ext lecoffre/front:int-dev
``` ```
#### Publication via CI (git.4nkweb.com) #### Publication via CI (git.4nkweb.com)
- Le push d'image est effectué par la CI de `git.4nkweb.com` suite à un `git push`. - Le push d'image est effectué par la CI de `git.4nkweb.com` suite à un `git push`.
- Définir le tag Docker dans le message de commit: `ci: docker_tag=ext` (fallback CI: `dev-test`). - Définir le tag Docker dans le message de commit: `ci: docker_tag=int-dev` (fallback CI: `dev-test`).
- La branche peut être utilisée par la CI comme tag en labsence doverride. - La branche peut être utilisée par la CI comme tag en labsence doverride.

View File

@ -11,7 +11,7 @@ export default class CryptoService {
kty: "oct", kty: "oct",
k: FrontendVariables.getInstance().KEY_DATA, k: FrontendVariables.getInstance().KEY_DATA,
alg: "A256GCM", alg: "A256GCM",
ext: true, int-dev: true,
}; };
} }

View File

@ -17,7 +17,7 @@ Ce document liste les scénarios de test pour valider la chaîne CI/CD décrite
- Construire limage avec le forward SSH. - Construire limage avec le forward SSH.
- Valider la taille, les couches, lutilisateur non-root, et lexécution `npm run start`. - Valider la taille, les couches, lutilisateur non-root, et lexécution `npm run start`.
- Pousser limage taguée (ex. `ext`) vers le registry `git.4nkweb.com` et vérifier la présence. - Pousser limage taguée (ex. `int-dev`) vers le registry `git.4nkweb.com` et vérifier la présence.
### Tests Kubernetes ### Tests Kubernetes

View File

@ -1,4 +1,4 @@
### Tests image "ext" ### Tests image "int-dev"
Objectif: vérifier que l'image démarre et que les URLs d'API proviennent des variables d'environnement. Objectif: vérifier que l'image démarre et que les URLs d'API proviennent des variables d'environnement.
@ -7,8 +7,8 @@ Plan de test manuel:
1. Vérifier l'injection des variables NEXT_PUBLIC_* 1. Vérifier l'injection des variables NEXT_PUBLIC_*
``` ```
docker pull git.4nkweb.com/4nk/lecoffre-front:ext docker pull git.4nkweb.com/4nk/lecoffre-front:int-dev
docker run --rm git.4nkweb.com/4nk/lecoffre-front:ext sh -lc "env | grep '^NEXT_PUBLIC_' | sort" docker run --rm git.4nkweb.com/4nk/lecoffre-front:int-dev sh -lc "env | grep '^NEXT_PUBLIC_' | sort"
``` ```
Attendus (exemples): Attendus (exemples):
@ -18,7 +18,7 @@ Attendus (exemples):
2. Vérifier que l'app démarre 2. Vérifier que l'app démarre
``` ```
docker run --rm -p 3001:3000 git.4nkweb.com/4nk/lecoffre-front:ext docker run --rm -p 3001:3000 git.4nkweb.com/4nk/lecoffre-front:int-dev
# Ouvrir http://localhost:3001/lecoffre # Ouvrir http://localhost:3001/lecoffre
``` ```