- LBA - La bonne alternance
Consultez la Fiche Produit pour plus d'informations sur le projet.
Avant d'installer le projet, assurez-vous d'avoir les éléments suivants :
-
Docker 23.03.0+
-
GPG
-
NodeJS 20+ (vous pouvez utiliser n pour l'installer)
-
brew install yq https://github.com/mikefarah/yq
-
brew install git-lfs https://git-lfs.com/
-
brew install 1password-cli https://developer.1password.com/docs/cli/get-started/
-
Ansible 2.7+:
brew install ansible
-
sshpass
brew tap esolitos/ipa brew install esolitos/ipa/sshpass
-
pwgen:
brew install pwgen
-
bash 5+:
brew install bash
Pour décrypter les variables d'environnement, vous avez besoin d'une clé GPG. Si vous n'en avez pas, vous pouvez en créer une en suivant la documentation GitHub ici.
Voici les étapes pour créer votre clé GPG :
-
Lors de la création de la clé, choisissez les options suivantes :
Please select what kind of key you want
>ECC (sign and encrypt)
Please select which elliptic curve you want
>Curve 25519
Please specify how long the key should be valid
>0
Real Name
:<Prenom> <Nom>
Email Address
:email@mail.gouv.fr
-
Pour utiliser votre clé au sein du projet, publiez-la en exécutant la commande suivante :
gpg --list-secret-keys --keyid-format=long
L'identifiant de votre clé correspond à la valeur
sec ed25519/<identifiant>
. -
Pour utiliser votre clé au sein de la mission apprentissage, vous devez la publier en exécutant la commande suivante :
gpg --send-key <identifiant>
-
Pour une meilleure sécurité, il est recommandé de sauvegarder les clés publique et privée nouvellement créées. Vous pouvez les exporter en exécutant les commandes suivantes :
gpg --export <identifiant> > public_key.gpg gpg --export-secret-keys <identifiant> > private_key.gpg
Ces deux fichiers peuvent être sauvegardés, par exemple, sur une clé USB.
-
Communiquez votre clé à votre équipe afin d'être autorisé à décrypter le vault.
Une fois autorisé, vous aurez accès aux fichiers suivants :
.infra/vault/.vault-password.gpg
- Installer 1password cli et connecter votre compte
- brew install 1password-cli https://developer.1password.com/docs/cli/get-started/
Avant de lancer l'application, assurez-vous d'installer toutes les dépendances nécessaires en exécutant la commande suivante :
yarn
yarn setup
Cette commande mettra à jour les dépendances du projet.
Le script vous demandera plusieurs fois la phrase secrète de votre clé GPG pour décrypter les variables d'environnement du vault.
Il est possible que vous rencontriez un problème avec le fichier .infra/local/mongo_keyfile
lors du démarrage du container de mongodb
(vous auriez des erreurs dans les logs du démarrage du container).
Si c'est le cas, vérifiez que les droits du ficher sont bien 440
pour MacOS et 400
pour Linux et que le fichier appartient à l'utilisateur lançant docker
.
yarn dev
yarn seed
Vous pouvez maintenant accéder à l'application via l'URL http://localhost:3000
Vous pouvez maintenant accéder à l'API via l'URL http://localhost:5001
Vous pouvez maintenant accéder au SMTP via l'URL http://localhost:8025
Les principales opérations sont regroupées dans le package.json
.
yarn setup
installation ou mise à jour de vos fichiers d'environnement de développement depuis le vault.yml (server/.env
et ui/.env
)
Pour démarrer l'application en mode local, exécutez la commande suivante :
yarn dev
Lance la stack local de développement (server, ui, services)
Cette commande démarre les containers définis dans le fichier docker-compose.yml
.
yarn cli <command>
commande pour lancer les commandes du cli mna-lba
yarn server:dev
Lance le server en dev indépendamment de la stack
yarn ui:dev
Lance l'ui en dev indépendamment de la stack
Lance les services docker en local
yarn services:start
Stopper les services docker en local
yarn services:stop
Supprimer les services docker en local
yarn services:clean
yarn seed <OPTIONAL:DB_URL>
Pour créer des jeux de test facilement il suffit de lancer les commandes suivante. Applique la base de données seed sur la base de données cible (par défaut la base de données locale)
Mise à jour de la base de données seed depuis votre local
yarn seed:update
Deploie l'application sur l'environnement cible
yarn deploy <environnement> <OPTIONAL:--user USERNAME>
TODO: Optional only if 1password is configured
Cli pour créer une migration
yarn migration:create -d <name>
Ajouter une exception à talisman
yarn talisman:add-exception
Édition du vault ansible
yarn vault:edit
Lint global du projet
yarn lint
Création d'une release
yarn release:interactive
Les variables d'environnement local du server sont stocké dans le vault (peut contenir des secrets). Si vous souhaitez overwwrite certaines variables ou changer le port de l'api par exemple, il est possible de créer un fichier server/.env.local
et ui/.env.local
Pour exécuter les tests localement, utilisez la commande suivante :
yarn test
Cette commande exécutera tous les tests du projet et vous affichera les résultats.
Assurez-vous:
-
D'avoir installé toutes les dépendances via la commande
yarn install
avant de lancer les tests -
D'avoir lancé l'application car les tests utilisent la base de donnée.
Charger les variables d'environnement :
export $(cat cypress.env|xargs)
Pour ouvrir cypress localement, utilisez la commande suivante :
yarn e2e
Pour executer cypress sur les environnements spécifiques :
yarn e2e:production
yarn e2e:recette
Pour mettre à jour les snapshots, utilisez la commande suivante dans /shared
yarn test --update