Ce document contient des instructions sur la mise en place d'une instance de développement du site afup.org.
- Créer un fork du repository sur votre compte GitHub
- Cloner ce fork avec git :
git clone https://github.com/my-account/afup-web.git- Lancer
make docker-uppour lancer le projet - Lancer
make initpour le setup initial (config, dépendances, base de données)
Le site devrait maintenant être accessible en local :
- Le site : https://localhost:9205
- Mailcatcher: http://localhost:1181
La base de test inclus un utilisateur administration avec les identifiants suivants :
- username :
admin@admin.fr - password :
admin
Plusieurs possibilités de configuration des containers sont disponibles, via l'utilisation de variables d'environnement.
Pour faciliter leur configuration, un fichier .env est créé à la racine du projet à la première exécution de la commande make docker-up.
Ce fichier contient la liste des options disponibles.
Le fichier compose.override.yml est créé automatiquement à l'installation du projet.
Par exemple, les ports utilisés pour le site et mailcatcher peuvent être modifiés dans ce fichier.
La variable d'environnement DOCKER_UP_OPTIONS permet de passer des options à la commande docker compose up (via make docker-up).
Pour faire fonctionner les images des bases de données (site et tests) sur un processeur ARM (par exemple sur Mac) il
faut ajouter une surcharge dans le fichier compose.override.yml :
services:
db:
platform: linux/amd64
dbtest:
platform: linux/amd64Config par défaut :
- user :
afup - pass :
afup - host :
localhost - port :
3606 - database :
web
La base de donnée est accessible via le script docker/bin/mysql.
Pour que la recherche à facettes fonctionne, il faut créer un compte gratuit sur www.algolia.com et créer une application Algolia.
Une fois l'application crée, mettre à jour le fichier .env avec les clés d'API automatiquement générées et relancer le projet via Docker.
ALGOLIA_APP_ID=DVB92YWTPE # Algolia Application ID
ALGOLIA_BACKEND_API_KEY=78e71e5r5c2Rb353f5a03376gb9878779 # Algolia Write API Key
ALGOLIA_FRONTEND_API_KEY=74e71e5r5c2Rb353f5a03376gb9878777 # Algolia Search API KeyLancer les commandes suivantes pour créer les différents index :
php bin/console indexing:meetups
php bin/console indexing:planete
php bin/console indexing:talksL'exécution des tests nécessite que le projet soit lancé via Docker.
Behat est utilisé pour tester les différentes pages du site (front et backoffice).
Il faut se connecter au container via make console puis :
./bin/behatTip
Il est possible de spécifier un test dans la ligne de commande :
# Une feature entière
./bin/behat tests/behat/features/Admin/Events/Planning.feature
# Un scénario spécifique
./bin/behat tests/behat/features/Admin/Events/Planning.feature:14Une alternative est d'utiliser la commande make test-functional, attention cette commande arrête les containeurs de
tests à la fin de l'exécution de la suite de test.
Si par la suite, vous souhaitez lancer un test, il faut bien penser à les allumer à nouveau.
Les tests unitaires sont écrits via PHPUnit.
Il faut se connecter au container via make console puis :
./bin/phpunit --testsuite unitUne alternative est d'utiliser make test dans le container, attention cette commande
exécute également PHP-Cs-Fixer.
Ces tests sont écrits via PHPUnit et utilisent le kernel de Symfony : https://symfony.com/doc/current/testing.html#integration-tests
Pour les lancer, il faut se connecter au container via make console puis :
./bin/phpunit --testsuite integrationUne alternative est d'utiliser la commande make test-integration, attention cette commande arrête les containeurs de
tests à la fin de l'exécution de la suite de test.
Si par la suite, vous souhaitez lancer un test, il faut bien penser à les allumer à nouveau.
Cet outil sert à s'assurer de la mise en forme du PHP.
Il faut se connecter au container via make console puis,
Pour afficher les erreurs :
make cs-lint
Pour corriger les erreurs :
make cs-fix
Cet outil sert à vérifier les erreurs de typage dans le PHP.
PHPStan est lancé via un container Docker dédié pour pouvoir utiliser la dernière version sans avoir de conflit avec la version PHP du projet.
make phpstan
Il est possible de tester les paiements Paybox en environnement de développement.
Pour cela, les identifiant, site et rang de test sont déjà configurés dans le fichier .env par défaut.
Ensuite pour le paiement, il faut utiliser ces informations de carte (celle "Carte participant au programme 3-D Secure (enrôlée)") :
- Numéro de carte :
1111222233334444 - Validité :
12/25 - CVV :
123
Afin de simuler un appel Paybox, il y a une commande disponible (en environnement de dev uniquement).
Cette commande utilise une série de questions pour guider son utilisation.
Il faut cependant récupérer le cmd qui est indiqué dans la fenêtre de Paybox.
Ce paramètre est de la forme : C2026-170120261126-0-1-ADMIN-84B ou F202601-1701-JDOE-11f8d
bin/console dev:paybox-callback-simulator
La connection GitHub est utilisée pour le CFP.
Aller sur Register a new OAuth app
Créer une application avec ces paramètres :
- Application name:
AFUP/Web dev - Homepage URL:
https://localhost:9205/ - Authorization callback URL:
https://localhost:9205/connect/github/check
Valider avec le bouton Register application.
Récupérer le Client IDet le Client secret.
Mettre ces 2 informations dans le fichier .env :
GITHUB_CLIENT_ID=<Client ID GitHub>
GITHUB_CLIENT_SECRET=<Client secret GitHub>Cet outil est utilisé pour les exports des inscriptions.
Aller sur Google Cloud Platform Console
Créer un projet avec ces paramètres :
- Nom du projet:
AFUP/Web dev - Valider avec le bouton
Créer
Puis dans Identifiants, Créer des identifiants, récupérer la clé.
Mettre cette information dans le fichier .env :
GOOGLE_MAPS_API_KEY=<Clé API Google>Puis dans API et services activer l'API Geocoding API.
Pour pouvoir poster des replays sur Bluesky, il faut créer un mot de passe d'application : https://bsky.app/settings/app-passwords
Ensuite, il faut configurer l'identifier et ce mot de passe dans le fichier .env :
BLUESKY_API_IDENTIFIER=example.bsky.social
BLUESKY_API_APP_PASSWORD=my-app-passwod