/pass-culture-main

Applications du pass Culture

Primary LanguagePythonMozilla Public License 2.0MPL-2.0



Quality Gate Status Coverage

Testing Environement

Tag

Le repo main contient les 5 projets suivants :

  • l'api (Flask)
  • le portail pro (React), pour les acteurs culturels
  • adage-front (React, TS), application frontend pour les rédacteurs de projets scolaires
  • doc : documentation de l'API pour les partenaires du pass Culture
  • maintenance-api : page de maintenance (HTML)

Installation

Installer les bibliothèques

  • Docker

  • NVM (Node Version Manager)

    • curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
  • Node

    • Lancer nvm install dans /pro et /adage-front
  • Yarn

  • GPG (outil de (dé)chiffrement)

    • GPG Suite (MacOS)
    • sudo apt install gpg (Linux)
  • Commitizen (CLI pour écrire des commits au bon format)

    • pip install -U commitizen ou brew install commitizen
  • Pour MacOS spécifiquement

    • CoreUtils: brew install coreutils libxmlsec1
  • Pour Linux spécifiquement

    • L'API a besoin des paquets suivants, à installer avec sudo apt install python3-dev libpq-dev xmlsec1 libpango-1.0-0 libpangoft2-1.0-0 pour les distributions Ubuntu

Installer les CLI

Installer l'ensemble des projets

Il vous faudra une clé SSH sur votre profil GitHub pour pouvoir cloner le repository.

  1. git clone git@github.com:pass-culture/pass-culture-main.git pass-culture-main
  2. cd pass-culture-main
  3. ./pc symlink
  4. pc install

Les README de chaque sous-projet détailleront leurs installations spécifiques.

Lancer les applications

Voici de brèves instructions pour lancer l'API et les différents frontends via le script pc, qui fait appel à docker-compose. On trouvera dans le README d'api d'autres manières de lancer le backend.

api

  • pc start-backend
  • pc sandbox -n industrial (pour peupler la DB)

pro

  • pc start-pro
  • http://localhost:3001/ devrait être lancé et fonctionnel
  • Connectez-vous avec pctest.admin93.0@example.com (admin) ou pctest.pro93.0@example.com (non-admin)

adage-front

  • pc start-adage-front
  • http://localhost:3002/ devrait être lancé et fonctionnel
  • Connectez-vous avec un token valide en le passant en query param (pour générer un token valide, générez-le via le helper de test dans l'API)

Flask Admin

  • lancer api ou pro
  • se connecter avec les identifiants d'un compte admin, par exemple pctest.admin93.0@example.com
  • visiter http://localhost/pc/back-office/

Le mot de passe des utilisateurs de la sandbox dans un environnement de développement est : user@AZERTY123

L'environnement de test déployé dans le cloud (testing) utilise un mot de passe secret par souci de protection des données manipulées lors des tests ; en interne, le mot de passe « PRO - testing » est disponible dans le coffre-fort de l'équipe.

Ces utilisateurs existent également pour le 97, en remplaçant 93 par 97.

Backoffice v3

  • pc start-backoffice
  • http://localhost:5001/backofficev3/ devrait être lancé et fonctionnel
  • Cliquez sur Se connecter via Google
  • Vous arriverez alors sur la page d'accueil du BO v3, en tant qu'utilisateur admin admin@passculture.local

Commandes utiles

  • Rebuild : pc rebuild-backend (reconstruire l'image docker sans cache)
  • Restart : pc restart-backend (effacer la base de données, et relancer tous les containers)
  • Reset :
    • pc reset-sandbox-db : si vos serveurs de dev tournent, et que vous souhaitez juste réinitialiser la db
    • pc reset-reco-db : (si vous voulez juste enlever les recommandations et bookings créés en dev par votre navigation)
  • Restore : pc restore-db file.pgdump (restaurer un fichier de dump postgresql (file.pgdump) en local)

Troubleshooting:

Si la commande sandbox renvoie des erreurs que je n'arrive pas à résoudre, on peut essayer de supprimer et reconstruire sa BDD locale via pc restart-backend. Sinon:

  • stopper les images lancées
  • docker rm -f pc-postgres <= suppression container
  • docker volume rm pass-culture-main_postgres_data <= suppression données
  • pc start-backend
  • pc sandbox -n industrial

Déploiement

Déployer dans l'environnement Testing

Le déploiement se lance automatiquement lors d'un merge sur la branche master

Pré-requis : installer jq

Déployer dans les environnements Staging, Production et Integration

Le déploiement se fait à partir d'actions github (notamment release--build, release--deploy.yml, release--build.yml, release--build-hotfix.yml) et est documenté sur Notion (article Tag-MES-et-MEP).

Pour connaître le numéro de version de l'api déployé :

https://backend.staging.passculture.team/health/api
https://backend.passculture.app/health/api

Administration

Connexion à la base postgreSQL d'un environnement

pc -e <testing|staging|production|integration> psql

ou

pc -e <testing|staging|production|integration> pgcli

Connexion à la base postgreSQL en local

pc psql

ou

pc pgcli

Configuration de Metabase

pc start-metabase

Lance Metabase et une base de données contenant les données sandbox du produit. Pour supprimer les volumes avant de lancer Metabase, utiliser la commande :

pc restart-metabase

L'url pour aller sur Metabase en local est : http://localhost:3002/

Pour configurer Metabase, il suffit de créer un compte admin, puis de se connecter à la base produit. Pour cela, il faut renseigner les informations suivantes :

  • Host : pc-postgres-product-metabase
  • Port : 5432
  • Database name : pass_culture
  • Database username : pass_culture
  • Database password : passq

Connexion en ligne de commande python à un environnement (testing | staging | production | integration)

pc -e <testing|staging|production|integration> python

Téléverser un fichier

Il est également possible d'uploader un fichier dans l'environnement temporaire à l'emplacement /tmp/uploads/myfile.extension

pc -e <testing|staging|production|integration> -f myfile.extension python
pc -e <testing|staging|production|integration> -f myfile.extension bash

Accéder aux logs des bases de données

En local :

pc access-db-logs

Sur les autres environnements :

pc -e <testing|staging|production> access-db-logs