Document mis à jour le 02/08/2024
App | Version |
---|---|
Node | 18.x.x |
NestJS | 9.4.1 |
Sequelize | 9.0.2 |
ESLint | 8.0.1 |
TypeScript | 4.3.5 |
esLint | 8.0.1 |
.github
: configuration de la CI avec Github Actions.husky
: scripts de hook de commit avec Husky/public
: stockage des ressources non dynamique accessible publiquement/src
: dossier contenant toutes les sources des différents modules de l'application/db
: configuration de la base de données avec Sequelize/config
: configuration d'accès à la base de données/migrations
: fichiers de migration de la structure de la base/seeders
: fichiers de seeds pour générer des données dans la base de donnée- (...) Les modules de l'application
/utils
: fonctions utilitaires communesapp.module.ts
: Module global de l'applicationtracer.ts
: fichier d'initialisation de la connexion à DataDogmain.ts
: point d'entrée de lancement du serveurworker.ts
: point d'entrée de lancement du workerworker.module.ts
: Module global du worker
/tests
: L'ensemble des tests e2e par module- (...) Les différents modules testés
- custom-testing.module.ts: Le module de test
- database.helper.ts: Helper permettant les interactions avec la base de donnée
- jest-e2e.json: Fichier de configuration de Jest
- mocks.types.ts: Fichier de définition des Mock de services
.dockerignore
: Les fichiers qui seront ignorés dans Docker.env
: à ajouter pour gérer les variables d'environnements (cf. exemple).env.test
: à ajouter pour gérer les variables d'environnements dans le cadre des tests en local.env.dist
: fichier de distribution des variables d'env.eslintrc.js
: configuration pour eslint.gitignore
: Configuration des fichiers qui ignorés par Git.lintstagedrc.js
: configuration pour lint-stagged.prettierrc.json
: configuration pour Prettier.sequelizerc
: configuration pour Sequelizedocker-compose.yml
: Définition des différents containers Docker pour le développement localdocker-entrypoint.sh
: Point d'entrée de lancement de l'app avec DockerDockerfile
: configuration du container Docker de l'applicationnest-cli.json
: configuration de nest pour l'appnest-cli.worker.json
: configuration de nest pour le workerpackage.json
: configuration du projet et des dépendancesProcfile
: configuration des process Heroku à lancer après déploiementtsconfig.json
: configuration pour typescriptyarn.lock
: définitions des dépendances et sous dépendances et leur version
Pour lancer le projet vous avez besoin de Docker ainsi que de NodeJs.
Veuillez consulter le fichier .env.dist pour connaitre les variables d'environnement utilisés dans le projet. Vous devez définir deux nouveaux fichiers de variables d'environnement :
- un fichier
.env
pour les variables d'environnement de l'application en moderun
- un fichier
.env.test
pour les variables d'environnement de l'application en modetest
Création des containers de l'application
docker-compose up --build
Dans le cas où vous travaillez sur mac, le module Sharp peut poser problème, vous devez donc le réinstaller au sein des containers:
docker exec -it linkedout-api-worker sh
rm -r node_modules/sharp/
npm install --platform=linux --arch=x64 sharp --legacy-peer-deps
exit
docker exec -it linkedout-api-test sh
rm -r node_modules/sharp/
npm install --platform=linux --arch=x64 sharp --legacy-peer-deps
exit
Entrez dans votre container
docker exec -it linkedout-api-worker bash
Pour créer la DB:
yarn db:create
Pour lancer les migrations :
yarn db:migrate
Pour remplir la base de données avec un utilisateur administrateur permettant la création par la suite d'autres utilisateurs :
yarn db:seed
Les identifiants de l'administrateur crée sont :
Adresse mail : admin@linkedout.fr
Mot de passe : Admin123!
docker exec -it linkedout-db sh
psql -d linkedout -p 5432 -U linkedout -W
Entrez le mdp de la BD (dans le docker compose: "linkedout"), puis exécutez la commande SQL.
docker compose up
Compiler l'applicaiton
yarn build
Démarrer l'applicatin précédemment compilé
yarn start
Démarrer le worker
yarn worker:start:dev
yarn worker:start
yarn test:eslint
Ces deux commandes sont lancées par les hooks de commit.
docker run --name linkedout-db-test -e POSTGRES_PASSWORD=linkedout -e POSTGRES_USER=linkedout -e POSTGRES_DB=linkedout -d -p 54300:5432 postgres
Vous avez besoin des données du fichier .env.test
pour les tests en local, et de renseigner le champ DATABASE_URL (
ex: postgresql://linkedout:linkedout@localhost:54300/linkedout
) avec l'adresse de l'instance Docker
NODE_ENV=dev-test yarn db:migrate
yarn test:e2e
est utilisé pour l'intégration continue pour lancer les tests avec les valeurs du fichier.env
NODE_ENV=dev-test yarn test:e2e
pour lancer les tests en local, en utilisant le fichier.env.test
Le déploiement se fait automatiquement grâce à Github Actions et Heroku.
Si un commit est poussé sur develop
, l'application sera déployé sur la pre-production : * *https://entourage-job-preprod.herokuapp.com**
Si un commit est poussé sur master
, l'application sera déployé sur la production : * *https://api.linkedout.fr**
Les tests sont effectués sur Github Actions avant de déployer le projet sur Heroku (Les variables nécessaires pour executer les tests sont définies dans main.yaml et set dans les paramètres de secrets du repository sur GitHub)