133 lines
4.7 KiB
Markdown
133 lines
4.7 KiB
Markdown
# 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:
|
|
|
|
- [Golang > 1.20](https://go.dev/)
|
|
- [Docker](https://www.docker.com/)
|
|
- [Git](https://git-scm.com/)
|
|
- [GNU Make](https://www.gnu.org/software/make/)
|
|
|
|
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`](https://github.com/cortesi/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`](https://github.com/slok/grafterm) branché sur l'instance Prometheus locale.
|
|
|
|
### `make siege`
|
|
|
|
Lancer une session de test [`siege`](https://github.com/JoeDog/siege) sur l'instance `bouncer-proxy` locale.
|
|
## Arborescence du projet
|
|
|
|
```bash
|
|
.
|
|
├── 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
|
|
```
|