- pass-emploi-api
- pass-emploi-auth : Keycloak
- SendInBlue (SIB) : Templates & Envois d'emails
- pole-emploi.io : avoir les accès dashlane
- api milo ? a-t-on besoin de quelque chose?
- firebase ?
- Lancer les seeds :
yarn seed
Pour ajouter des seeds, il faut aller dans le dossier src/infrastructure/sequelize/seeders
- Créer une migration :
npx sequelize-cli migration:generate --name nom-de-la-migration
- Lancer les migrations
npx sequelize-cli db:migrate
- Rollback la dernière migration
npx sequelize-cli db:migrate:undo
xxx = staging | prod
- Créer une entrée jeune en base de données (pa-back-xxx)
- structure : PASS_EMPLOI
- type : JEUNE
- date_creation : maintenant
- id_conseiller : sur staging -> "41" Nils conseiller standard ou "1" MALEK MALEK superviseur
- id et id_authentification : identiques (nom d'utilisateur à la connexion)
- email : une consultée pour les fonctionnalités avec envoi d'email
- Créer une entrée Keycloak (pa-auth-xxx)
- Récupérer les identifiants de connexion admin sur les variables d'environnement (staging : pa-auth-staging, prod : Dashlane)
- Se connecter au Keycloak
- Users -> Add User -> rentrer les informations
- Sélectionner l'utilisateur créé -> Attributes -> Add -> id_user :
- Credentials -> Reset Password -> Temporary Off
- Création d'une collection Firebase pour la messagerie
L'historique des décisions est consultable dans le dossier decisions
- Clean archi / CQS sur Excalidraw
Ne pas oublier, une fois la fonctionnalité merged, de lancer la task yarn initialiser-les-crons
(à faire en recette et en prod)
Le runner de test est mocha, avec chai pour les assertions et sinon pour les mocks/stubs
- Controllers
- On utilise l'utilitaire TestingModuleBuilder de NestJS pour monter l'application afin de tester les routes.
- Intégration avec la base de données
- Lors du lancement des tests avec les bases de données PostgreSql et Redis, des images docker sont lancées.
- Après chaque test, les données sont remises à 0
- Afin d'avoir accès aux DB durant les tests, il faut nommer le fichier de test
*.db.test.ts
Les tests sans base de données sont lancés en parallèle pour aller plus vite, ceux ayant une adherence avec la base de données en série
- Lancement en mode watch :
yarn watch
Consultez l'api sur : http://localhost:5000/documentation
Le mode permet de lancer l'API swagger en mode observation. On peut coder les fonctionnalités et requêter les modifications faites à l'API sans avoir à relancer l'application.
Tout le code doit être testé pour pouvoir être mergé.
- hooks pre-commit
- lint
- tests
- sécurité
- review app
yarn test
- Tests avec l'IDE :
Pour lancer les tests avec votre IDE favori, il est nécessaire de lancer d'abord une base de données via le docker compose.
yarn start:db:test
Ensuite on il faut exporter la variable DATABASE_URL.
export DATABASE_URL=postgresql://test:test@localhost:56432/test
Enfin on peut lancer les tests avec le script ci (qui ne lance pas de DB)
yarn test:ci
-
Staging Web, test des fonctionnalités conseiller :
- Page conseiller
- Avoir les identifiants partagés sur dashlane
-
Staging App, test des fonctionnalités jeune :
- Télécharger CEJ-staging sur firebase
- création d'un compte jeune sur la BDD staging
-
Tests notifications push / email :
- Reporter son pushToken de notre jeune staging sur un jeune de la bdd locale
- Reporter son mail sur un conseiller de la bdd locale
Nous utilisons actuellement Scalingo comme hébergeur sur l'application Web. Il existe deux environnements : Staging & Prod
Seul un email beta.gouv est compatible avec la prod et la région secnum !
- Installer le cli scalingo
- Ajouter sa clé ssh sur scalingo
- User settings > pa-back-prod droits
- ajouter son compte à la région outscale-secnum (demande au chat support scalingo)
- (pour support prod) ajouter sur intellij les informations de connexion à la base de données
L'environnement de staging front correspond à l'application scalingo front pa-back-staging
.
Cette application est branchée sur la branche develop
du repo.
À chaque nouveau commit sur cette branche, un déploiement automatique sera lancé sur l'application.
Il est également possible de déployer manuellement en allant sur pa-back-staging > Deploy > Manual deployments > Trigger deployment
Les review apps sont activés sur cet environnement. Donc, à chaque nouvelle PR sur develop, une application temporaire au nom pa-back-staging-pr[numéro de la PR sur github]
sera automatiquement créée. Cette application sera automatiquement détruite au merge de la PR.
Pour plus d'informations sur les review apps, vous pouvez voir la doc scalingo
L'environnement de prod front correspond à l'application scalingo back pa-back-prod
.
Cette application est branchée sur la branche master
du repo.
Le déploiement automatique est désactivé : il faut alors aller sur scalingo et suivre les étapes suivantes pa-back-prod > Deploy > Manual deployments > Trigger deployment
Les review apps ne sont pas activées sur la prod.
- Tagger la version sur le commit de develop que l'on veut déployer
- Faire une MR de develop vers master et merger
- Aller sur scalingo et déployer la version de master
Il est possible de rollback une application Scalingo sur un tag donné (de la branche rattachée à l'application).
git remote add scalingo git@ssh.${MA_REGION}.scalingo.com:${MON_APPLICATION}.git
git push --force ${ID_COMMIT}:refs/heads/master
scalingo --region ${MA_REGION} -a ${MON_APPLICATION} run yarn tasks
scalingo --region ${MA_REGION} -a ${MON_APPLICATION} run IS_WEB=false IS_WORKER=false TASK_NAME=MAJ_CODES_EVENEMENTS TASK_DATE=2022-09-09T12:00:00+02:00 node dist/main
Voir le fichier TROUBLESHOOT.md
du même dossier.