A bot that post on the shout some messages about the activity on Gitea.
Go to file
Lephenixnoir bc9b9a5829
use correct number of total commits for large pushes
2024-03-18 22:56:54 +01:00
.gitignore rename secrets.py to gb_secrets.py 2021-06-06 15:45:19 +02:00
README.md README update 2022-04-13 23:07:52 +02:00
app.py use correct number of total commits for large pushes 2024-03-18 22:56:54 +01:00
gb_secrets.py ignore mirror sync events 2023-10-09 17:21:01 +02:00
gitea-bot.service updated service file to add a bit more log information 2022-04-13 22:10:36 +02:00

README.md

GLaDOS bot

Ce bot recoit des requêtes Gitea, les parse et poste des messages en tant que Gitea sur la shoutbox.

Configuration du backend

  1. Cloner le dépot dans /home/pc/gitea-bot/
  2. Copier les identifiants de Gitea dans gb_secrets.py (credentials = {"username":"Gitea", "password":"P@ssw0rd"})
  3. Placer gitea-bot.service dans /etc/systemd/system/
  4. Démarrer le service gitea-bot
# su pc
$ cd ~
$ git clone gitea@gitea.planet-casio.com:devs/Gitea-bot.git gitea-bot
$ vim gitea-bot/gb_secrets.py
$ exit
# cp /home/pc/gitea-bot/gitea-bot.service /etc/systemd/system/
# systemctl enable --now gitea-bot

En soit le cookie peut être celui de n'importe quel membre ayant le droit de causer sur la shout. Par contre ça ne sera plus Gitea qui causera.

Configuration de Gitea

Les webhooks peuvent être activés par dépôt ou globalement. Il est aussi possible de pousser des webhooks par défaut sur les dépôts nouvellement créés.

Activer les hooks de manière globale va déclencher des requêtes pour tous les dépôts, y compris les privés! Ça veut dire qu'il peut être bien de faire du filtrage dans le script si on veut éviter les annonces de dépôts confidentiels.

Pour activer les webhooks globalement, aller dans le panel admin.

  • Url cible : http://localhost:5000/, le service qui écoute les requêtes
  • Méthode HTTP : POST
  • Type de contenu : application/json
  • Confidentiel : Un token pour authentifier Gitea le cas échéant.

Sélectionner des éléments qui déclencheront des évènements, vérifier que le crochet est actif puis valider.

Les derniers évènements sont affichés sous le formulaire.

Traiter de nouveaux évènements

La documentation sur les events est disponible ici.

Gitea logge les événements récents dans les paramètres du webhook dans le panel admin.

Le script actuel est pas fou, n'hésitez pas à proposer des améliorations! :)

Tester les modifications en local

Lancer le serveur de test avec flask run ; les requêtes enregistrées par Gitea peuvent être envoyées avec curl.

curl http://127.0.0.1:5000 -X POST -H 'X-Gitea-Event:push' -H 'Content-Type: application/json' -d "$(cat logged-push-event.json)"

Modifier la verbosité des logs

Vous pouvez changer le niveau de verbosité des logs via la variable denvironement LOGLEVEL :

  • critical
  • error
  • warning
  • info (défaut)
  • debug

Appliquer des modifications

# su pc
$ cd ~/gitea-bot
$ git pull
$ exit
# systemctl restart gitea-bot

En cas de soucis

Si le bot ne fonctionne plus sans modification apparente, vous pouvez essayer de redémarrer le service. Cela réinitialisera la session et ses cookies dauthentification.