Skip to content

Commit 6554b3b

Browse files
committed
Fonctionne avec deux BDTOPO
1 parent d51943f commit 6554b3b

File tree

11 files changed

+80
-20
lines changed

11 files changed

+80
-20
lines changed

.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ IGN_REPORT_STATUS=submit
3636
MATOMO_ENABLED=false
3737
###> BD TOPO ###
3838
BDTOPO_2025_DATABASE_URL="postgresql://dialog:dialog@database:5432/dialog_bdtopo"
39+
BDTOPO_2025_2_DATABASE_URL="postgresql://dialog:dialog@database:5432/dialog_bdtopo"
40+
BDTOPO_ACTIVE_DATABASE_URL="${BDTOPO_2025_DATABASE_URL}"
3941
###< BD TOPO ###
4042
###> JOP ###
4143
APP_JOP_ORG_ID=

.github/workflows/bdtopo_migrate.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ jobs:
3535
- name: Init environment variables
3636
run: |
3737
echo "BDTOPO_2025_DATABASE_URL=${{ secrets.BDTOPO_2025_DATABASE_URL }}" >> .env
38+
echo "BDTOPO_2025_2_DATABASE_URL=${{ secrets.BDTOPO_2025_2_DATABASE_URL }}" >> .env
39+
echo "BDTOPO_ACTIVE_DATABASE_URL=${{ secrets.BDTOPO_ACTIVE_DATABASE_URL }}" >> .env
3840
3941
- name: CI
4042
run: make ci_bdtopo_migrate BIN_COMPOSER="composer" BIN_CONSOLE="php bin/console"

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ jobs:
6868
echo "DATABASE_URL=postgresql://dialog:dialog@localhost:5432/dialog" >> .env
6969
echo "BDTOPO_DATABASE_URL=${{ secrets.BDTOPO_DATABASE_URL }}" >> .env
7070
echo "BDTOPO_2025_DATABASE_URL=${{ secrets.BDTOPO_2025_DATABASE_URL }}" >> .env
71+
echo "BDTOPO_2025_2_DATABASE_URL=${{ secrets.BDTOPO_2025_2_DATABASE_URL }}" >> .env
72+
echo "BDTOPO_ACTIVE_DATABASE_URL=${{ secrets.BDTOPO_ACTIVE_DATABASE_URL }}" >> .env
7173
echo "METABASE_DATABASE_URL=postgresql://dialog:dialog@localhost:5432/dialog" >> .env
7274
echo "REDIS_URL=redis://localhost:6379" >> .env
7375
echo "APP_STORAGE_SOURCE=memory.storage" >> .env

.github/workflows/litteralis_import.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ jobs:
5959
run: |
6060
echo "DATABASE_URL=${{ secrets.APP_LITTERALIS_IMPORT_DATABASE_URL }}" >> .env.local
6161
echo "BDTOPO_2025_DATABASE_URL=${{ secrets.BDTOPO_2025_DATABASE_URL }}" >> .env.local
62+
echo "BDTOPO_2025_2_DATABASE_URL=${{ secrets.BDTOPO_2025_2_DATABASE_URL }}" >> .env.local
63+
echo "BDTOPO_ACTIVE_DATABASE_URL=${{ secrets.BDTOPO_ACTIVE_DATABASE_URL }}" >> .env.local
6264
echo "EMAIL_SUPPORT=${{ vars.EMAIL_SUPPORT }}" >> .env.local
6365
echo "MAILER_DSN=${{ secrets.MAILER_DSN }}" >> .env.local
6466
# Deal with JSON quotes

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -307,11 +307,11 @@ ci_bdtopo_update: ## Run CI steps for BD TOPO Update workflow
307307
sleep 3; \
308308
# Récupérer les credentials depuis l'URL du secret et construire l'URL du tunnel
309309
# Compatible macOS et Linux (sed fonctionne de la même manière pour ces patterns)
310-
if [ -n "$$BDTOPO_2025_DATABASE_URL" ]; then \
310+
if [ -n "$$BDTOPO_2025_2_DATABASE_URL" ]; then \
311311
# Construire la nouvelle URL avec localhost:10002
312312
# Utiliser une substitution compatible macOS et Linux
313-
BDTOPO_TUNNEL_URL=$$(echo "$$BDTOPO_2025_DATABASE_URL" | sed 's|@[^/]*|@127.0.0.1:10002|'); \
314-
export BDTOPO_2025_DATABASE_URL="$$BDTOPO_TUNNEL_URL"; \
313+
BDTOPO_TUNNEL_URL=$$(echo "$$BDTOPO_2025_2_DATABASE_URL" | sed 's|@[^/]*|@127.0.0.1:10002|'); \
314+
export BDTOPO_2025_2_DATABASE_URL="$$BDTOPO_TUNNEL_URL"; \
315315
fi; \
316316
./tools/wait-for-it.sh 127.0.0.1:10002; \
317317
./tools/bdtopo_download_and_update \

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ Digitaliser, diagnostiquer, diffuser l’information réglementaire de logistiqu
1717

1818
ℹ️ Vous devez avoir **[Docker](https://www.docker.com/)** et **[Docker Compose](https://docs.docker.com/compose/)** d'installés sur votre machine.
1919

20-
Tout d'abord, demandez à un membre de l'équipe la valeur de la variable d'environnement `BDTOPO_2025_DATABASE_URL`, et ajoutez-la à `.env.local` (créez le fichier si besoin) :
20+
Tout d'abord, demandez à un membre de l'équipe la valeur de la variable d'environnement `BDTOPO_ACTIVE_DATABASE_URL`, et ajoutez-la à `.env.local` (créez le fichier si besoin) :
2121

2222
```bash
2323
# .env.local
24-
BDTOPO_2025_DATABASE_URL=postgres://dialog_app:...
24+
BDTOPO_ACTIVE_DATABASE_URL=postgres://dialog_app:...
2525
```
2626

2727
Pour démarrer l'application (http://localhost:8000) :

config/packages/doctrine.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ doctrine:
88
schema_manager_factory: 'doctrine.dbal.default_schema_manager_factory'
99
use_savepoints: true
1010
bdtopo2025:
11-
url: '%env(BDTOPO_2025_DATABASE_URL)%'
11+
url: '%env(resolve:BDTOPO_ACTIVE_DATABASE_URL)%'
1212
use_savepoints: true
1313
metabase:
1414
url: '%env(METABASE_DATABASE_URL)%'

docs/deployment/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@ Chaque application peut être configurée avec les variables d'environnement sui
104104
| Variable d'environnement | Description | Valeur par défaut | Notes |
105105
|--------------------------|-------------|--------|-------|
106106
| `API_ADRESSE_BASE_URL` | URL de l'API de géocodage IGN (anciennement API Adresse) | `https://data.geopf.fr/geocodage` | L'API a été [transférée à l'IGN](https://adresse.data.gouv.fr/blog/lapi-adresse-de-la-base-adresse-nationale-est-transferee-a-lign) en 2025. |
107-
| `BDTOPO_2025_DATABASE_URL` | URL de connexion PostgreSQL à notre [hébergement BD TOPO](../tools/bdtopo.md) | _(Obligatoire)_ | En développement, à récupérer auprès d'un membre de l'équipe |
107+
| `BDTOPO_ACTIVE_DATABASE_URL` | URL de connexion PostgreSQL de la base BD TOPO actuellement servie par l'application | _(Obligatoire)_ | En production, peut pointer vers `BDTOPO_2025_DATABASE_URL` ou `BDTOPO_2025_2_DATABASE_URL` selon la base active |
108+
| `BDTOPO_2025_DATABASE_URL` | URL de connexion PostgreSQL à une instance physique BD TOPO | _(Obligatoire)_ | Utilisée avec `BDTOPO_2025_2_DATABASE_URL` pour gérer l'alternance active/inactive |
108109
| `BDTOPO_DATABASE_URL` | URL de connexion PostgreSQL à notre [hébergement BD TOPO](../tools/bdtopo.md) (legacy) | _(Obligatoire)_ | En développement, à récupérer auprès d'un membre de l'équipe |
109110
| `APP_EUDONET_PARIS_BASE_URL` | URL de l'API Eudonet Paris | https://eudonet-partage.apps.paris.fr | |
110111
| `APP_EUDONET_PARIS_ORG_ID` | Utiliser l'UUID de l'organisation Ville de Paris | _Vide_ | |

docs/tools/bdtopo.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,17 @@ DiaLog héberge une partie de la [BD TOPO](https://geoservices.ign.fr/bdtopo) po
44

55
## Démarrage rapide
66

7-
Pour le développement local, demandez la `BDTOPO_2025_DATABASE_URL` à un membre de l'équipe et ajoutez-les à votre `.env.local` (créer ce fichier à la racine du projet si nécessaire).
7+
Pour le développement local, demandez la `BDTOPO_ACTIVE_DATABASE_URL` à un membre de l'équipe et ajoutez-la à votre `.env.local` (créer ce fichier à la racine du projet si nécessaire).
88

99
Si vous cherchez à mettre en ligne une nouvelle version des tables BD TOPO, voir [Mettre à jour les données](#mettre-à-jour-les-données).
1010

1111
## Fonctionnement général
1212

1313
Les requêtes à la BD TOPO se font par une connexion dédiée, configurée dans la configuration doctrine (`config/packages/doctrine.yaml`).
1414

15-
L'URL de connexion est configurée par la variable d'environnement `BDTOPO_2025_DATABASE_URL`.
15+
L'URL de connexion utilisée par l'application est configurée par la variable d'environnement `BDTOPO_ACTIVE_DATABASE_URL`.
16+
17+
Les variables `BDTOPO_2025_DATABASE_URL` et `BDTOPO_2025_2_DATABASE_URL` représentent quant à elles deux bases physiques entre lesquelles on peut basculer lors des mises à jour de données.
1618

1719
Cette connexion dispose de ses propres migrations, séparées des migrations applicatives de DiaLog. Cela permet de configurer des indexes, fonctions et autres objets PostgreSQL spécifiquement dédiés à l'optimisation des requêtes adressées aux tables BD TOPO.
1820

@@ -122,12 +124,12 @@ Cette section explique comment mettre à jour une base BDTOPO locale pour tester
122124

123125
```bash
124126
# Pour l'application qui tourne dans Docker, utilisez le nom du service
125-
BDTOPO_2025_DATABASE_URL=postgresql://dialog:dialog@database:5432/dialog_bdtopo
127+
BDTOPO_ACTIVE_DATABASE_URL=postgresql://dialog:dialog@database:5432/dialog_bdtopo
126128
```
127129

128130
#### 🚀 Mise à jour en production
129131

130-
:warning: **Attention** : La mise à jour en production prend typiquement une heure voire plus. Pendant ce temps, le géocodage sera indisponible et les utilisateurs peuvent rencontrer des plantages. **Faites-le à une heure de faible trafic**.
132+
:information_source: La mise à jour charge désormais la base inactive définie par `BDTOPO_2025_2_DATABASE_URL`, puis l'application peut être basculée en changeant `BDTOPO_ACTIVE_DATABASE_URL` vers la base fraîchement chargée.
131133

132134
**Méthode recommandée : GitHub Actions**
133135

@@ -159,7 +161,7 @@ Le workflow GitHub Actions `bdtopo_update` automatise tout le processus et est l
159161
- Les logs et artefacts sont disponibles dans l'onglet "Actions" de GitHub
160162

161163
**Prérequis GitHub Actions** :
162-
- Le secret `BDTOPO_2025_DATABASE_URL` doit être configuré dans les secrets GitHub Actions
164+
- Les secrets `BDTOPO_2025_DATABASE_URL`, `BDTOPO_2025_2_DATABASE_URL` et `BDTOPO_ACTIVE_DATABASE_URL` doivent être configurés dans les secrets GitHub Actions
163165
- Le secret `GH_SCALINGO_SSH_PRIVATE_KEY` doit être configuré (déjà fait pour les autres workflows)
164166

165167
**Méthode alternative : Script en local**
@@ -200,7 +202,7 @@ Les indexes sont gérés via des migrations dédiées à la BDTOPO (dossier `BdT
200202

201203
Pour créer une migration vide, utiliser `make bdtopo_migration`.
202204

203-
Pour tester une migration sur une BD TOPO locale, configurer `BDTOPO_2025_DATABASE_URL` dans votre `.env.local` pour pointer sur la BD TOPO locale, puis utiliser `make bdtopo_migrate`.
205+
Pour tester une migration sur une BD TOPO locale, configurer `BDTOPO_ACTIVE_DATABASE_URL` dans votre `.env.local` pour pointer sur la BD TOPO locale, puis utiliser `make bdtopo_migrate`.
204206

205207
Pour exécuter une migration en prod, faire une PR avec la migration et la merger. Un job GitHub Actions lancera la migration.
206208

docs/tools/jop.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Si `zones.geojson` change ou si l'arrêté `JOP2024-ZONES` doit être recalculé
1414

1515
1. Récupérer le UUID de l'organisation "Préfecture de Police de Paris" (PP) en prod. Pour cela demander à un super-admin : l'UUID est visible dans l'URL de la page de l'organisation dans l'admin.
1616
2. Créer un fichier `.env.prod.local` vide, et y définir :
17-
* `BDTOPO_2025_DATABASE_URL`
17+
* `BDTOPO_ACTIVE_DATABASE_URL`
1818
* `APP_JOP_ORG_ID=ID`, où `ID` est l'UUID de la PP que vous venez de récupérer.
1919
3. Ouvrir un [tunnel](./db.md#utiliser-une-db-scalingo-en-local) vers la DB de prod :
2020

0 commit comments

Comments
 (0)