Replace 'ext' tag with 'int-dev'
All checks were successful
build-and-push-int-dev / build_push (push) Successful in 10s
All checks were successful
build-and-push-int-dev / build_push (push) Successful in 10s
This commit is contained in:
parent
2e1580e400
commit
6a51281d00
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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.).
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
- Externaliser au maximum les variables d’environnement.
|
- Externaliser au maximum les variables d’environnement.
|
||||||
- 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.
|
||||||
|
@ -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 l’image tagguée `ext` pour récupération par `lecoffre_node`.
|
- Rappel déploiement: builder et pousser l’image 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 l’iframe sur l’origine de `NEXT_PUBLIC_4NK_URL`.
|
- Normalisation SSR du `targetOrigin` de l’iframe sur l’origine de `NEXT_PUBLIC_4NK_URL`.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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:19‑alpine, `server.js`).
|
- Docker multi‑étapes: `deps` (npm ci), `development` (npm run dev), `builder` (npm run build), `int-dev` (runtime node:19‑alpine, `server.js`).
|
||||||
|
|
||||||
### Variables d’environnement
|
### Variables d’environnement
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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`.
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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 (multi‑stage)
|
### Docker (multi‑stage)
|
||||||
- É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 l’image)
|
- BuildKit SSH pour `le-coffre-resources` (clé non copiée dans l’image)
|
||||||
- Port runtime 3000; utilisateur non‑root `lecoffreuser`
|
- Port runtime 3000; utilisateur non‑root `lecoffreuser`
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ Cette documentation décrit le pipeline CI/CD tel qu’il 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:
|
||||||
|
10
docs/ext.md
10
docs/ext.md
@ -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 l’absence d’override.
|
- La branche peut être utilisée par la CI comme tag en l’absence d’override.
|
||||||
|
@ -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,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ Ce document liste les scénarios de test pour valider la chaîne CI/CD décrite
|
|||||||
|
|
||||||
- Construire l’image avec le forward SSH.
|
- Construire l’image avec le forward SSH.
|
||||||
- Valider la taille, les couches, l’utilisateur non-root, et l’exécution `npm run start`.
|
- Valider la taille, les couches, l’utilisateur non-root, et l’exécution `npm run start`.
|
||||||
- Pousser l’image taguée (ex. `ext`) vers le registry `git.4nkweb.com` et vérifier la présence.
|
- Pousser l’image taguée (ex. `int-dev`) vers le registry `git.4nkweb.com` et vérifier la présence.
|
||||||
|
|
||||||
### Tests Kubernetes
|
### Tests Kubernetes
|
||||||
|
|
||||||
|
@ -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
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user