bouncer/doc/fr/tutorials/getting-started-with-sources.md

4.7 KiB

Démarrer avec les sources

Dans ce tutoriel, nous verrons comment lancer un environnement de développement en local sur notre machine afin de travailler sur les sources de Bouncer.

Prérequis

Les éléments suivants doivent être installés sur votre machine:

Les ports suivants doivent être disponibles sur votre machine:

  • 8080
  • 8081

Étapes

  1. Cloner le dépôt des sources du projet Bouncer

    git clone https://forge.cadoles.com/Cadoles/bouncer
    
  2. Se positionner dans le répertoire du projet

    cd bouncer
    
  3. Lancer le projet en mode "développement"

    make watch
    

Si toutes les dépendances sont correctement installées et configurées sur votre machine, la console devrait afficher une série de messages pour ensuite s'arrêter sur quelque chose ressemblant à:

14:47:06: daemon: make run BOUNCER_CMD="--config config.yml server admin run"
2023-06-23 20:47:06.095 [INFO]	<./internal/command/server/admin/run.go:42>	RunCommand.func1	listening	{"url": "http://127.0.0.1:8081"}
2023-06-23 20:47:06.095 [INFO]	<./internal/admin/server.go:126>	(*Server).run	http server listening
14:47:06: daemon: make run-redis
bouncer-redis
docker run --rm -t \
	--name bouncer-redis \
	-v /home/wpetit/workspace/bouncer/data/redis:/data \
	-p 6379:6379 \
	redis:alpine3.17 \
	redis-server --save 60 1 --loglevel warning
1:C 23 Jun 2023 20:47:06.754 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 23 Jun 2023 20:47:06.754 # Redis version=7.0.11, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 23 Jun 2023 20:47:06.754 # Configuration loaded
1:M 23 Jun 2023 20:47:06.759 # Warning: Could not create server TCP listening socket ::*:6379: unable to bind socket, errno: 97
1:M 23 Jun 2023 20:47:06.760 # Server initialized
1:M 23 Jun 2023 20:47:06.760 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect

À ce stade, le serveur bouncer-admin écoute sur http://127.0.0.1:8081 et le serveur bouncer-proxy sur http://127.0.0.1:8080.

Note

L'outil modd est utilisé pour surveiller les modifications sur les sources et relancer automatiquement la compilation et les services en cas de changement.

Commandes make utiles

make watch

Surveiller les sources, compiler celles ci en cas de modifications et lancer les services bouncer-proxy et bouncer-admin.

make test

Exécuter les tests unitaires/d'intégration du projet.

make build

Compiler une version de développement du binaire bouncer.

make docker-build

Construire une image Docker pour Bouncer.

Vous pouvez ensuite lancer l'image localement avec la commande:

docker run \
    -it --rm \
    reg.cadoles.com/cadoles/bouncer:<tag> \
    -p 8080:8080 \
    bouncer server proxy run

make grafterm

Afficher un tableau de bord grafterm branché sur l'instance Prometheus locale.

make siege

Lancer une session de test siege sur l'instance bouncer-proxy locale.

Arborescence du projet

.
├── bin             # Répertoire de destination des binaires Go de développement
├── cmd             # Package principal (main) du binaire Bouncer
├── data            # Répertoire des données de développement (Redis)
├── dist            # Répertoire de destination des archives/paquets pour la publication
├── doc             # Répertoire de documentation du projet
├── internal        # Source Go du projet
│   ├── admin
│   ├── auth
│   ├── chi
│   ├── client
│   ├── command
│   ├── config
│   ├── format
│   ├── imports
│   ├── jwk
│   ├── proxy
│   ├── schema
│   ├── setup
│   └── store
├── layers          # Fichiers annexes liés aux layers (templates HTML)
│   └── queue
├── misc            # Fichiers annexes
│   ├── jenkins     # Fichiers liés au pipeline d'intégration continue Jenkins
│   ├── logo        # Logo du projet
│   └── packaging   # Fichiers liés à l'empaquetage des binaires
└── tools           # Outils utilisés en développement