Aller au contenu principal

Intégration domotique Forgejo / Gitea, gratuite et open source

Intégration Forgejo / Gitea pour Gladys Assistant

Vos dépôts Forgejo, Gitea ou Codeberg dans Gladys : versions, tickets, état de la CI.

Forgejo et Gitea sont des forges logicielles libres et auto-hébergées, avec la même API ; Codeberg fait tourner Forgejo. Cette intégration suit les dépôts que vous listez : chacun devient un appareil avec ses étoiles, ses tickets et demandes de fusion ouverts, sa dernière version et l'état de la CI de sa branche principale. Vos scènes peuvent réagir à une nouvelle version, un nouveau ticket, une nouvelle demande de fusion, ou une CI qui passe en échec ou revient au vert, et un widget du tableau de bord montre tous les dépôts d'un coup d'œil.

Testée contre de vraies instances Forgejo 11.0 et Gitea 1.27 (Docker, SQLite), et l'API publique de Codeberg ; pas encore contre une vraie instance Gladys : vos retours sont les bienvenus dans les issues.

Ce qu'il vous faut​

  • Gladys Assistant 5.1.0 ou plus récent.
  • Un Forgejo ou un Gitea joignable depuis la machine de Gladys, ou une forge publique comme codeberg.org.
  • Pour les dépôts privés seulement : un jeton d'accès d'un utilisateur qui peut les lire.

L'intégration ne fait que lire : elle n'écrit jamais rien sur la forge. À chaque actualisation (10 minutes par défaut), elle fait cinq requêtes par dépôt : le dépôt, ses cinq dernières versions, ses cinq derniers tickets et demandes de fusion, et l'état de la CI de sa branche par défaut. Sur Codeberg, gardez un intervalle de 10 minutes ou plus et une liste courte : c'est un service gratuit tenu par une association, et trop de requêtes reçoivent une réponse « HTTP 429 ».

Pour commencer​

1. Créer un jeton d'accès (dépôts privés)​

Les dépôts publics n'ont besoin d'aucun jeton. Pour les privés, ouvrez dans la forge Configuration → Applications → Générer un nouveau jeton, donnez-lui un nom et les droits en lecture seule read:repository et read:issue, puis copiez-le. Le jeton voit ce que voit son utilisateur : un utilisateur dédié le limite davantage.

2. Configurer l'intégration​

Dans Gladys, ouvrez Intégrations → Forgejo / Gitea → Configuration et remplissez :

  • Adresse de la forge : l'adresse avec laquelle vous ouvrez la forge, http://192.168.1.2:3000, https://git.example.com ou codeberg.org (HTTPS pour un nom sans port).
  • Jeton d'accès (facultatif) : le jeton de l'étape 1.
  • Dépôts à suivre : propriétaire/nom ou liens copiés du navigateur, séparés par des virgules, 20 au plus. Exemple : forgejo/forgejo, moi/mon-app.
  • Intervalle d'actualisation et Langue des noms.

Cliquez sur Tester la connexion : la forge et sa version, puis chaque dépôt avec ses étoiles et l'état de sa CI, ou la raison pour laquelle il est illisible.

3. Ajouter les appareils​

Dans Découverte, ajoutez les dépôts voulus comme appareils. Les chiffres arrivent aussitôt. Les déclencheurs de scène et le widget fonctionnent même pour un dépôt non ajouté comme appareil.

Les appareils​

Un appareil par dépôt, nommé propriétaire/nom, identifié par le numéro que la forge donne au dépôt : le renommer ou le transférer garde l'appareil (saisissez le nouveau nom dans la configuration).

FonctionnalitéTypeValeur
Étoilescompteurétoiles du dépôt
Forkscompteurforks
Tickets ouvertscompteurtickets ouverts (hors demandes de fusion)
Demandes de fusion ouvertescompteurdemandes de fusion ouvertes
Dernière versiontexteétiquette de la dernière version, sinon de la dernière préversion
Date de la dernière versiontextesa date de publication
État de la CItexteRéussie, En échec, En cours ou Pas de CI
CI réussiebinaire1 quand la CI passe, 0 quand elle échoue

L'état de la CI est le statut combiné du dernier commit de la branche par défaut : toutes les vérifications posées dessus, Forgejo Actions et Gitea Actions compris, ainsi que Woodpecker, Drone ou Jenkins quand ils remontent à la forge. Un « avertissement » compte comme réussi. Pendant que la CI tourne, CI réussie garde sa dernière valeur.

Tableau de bord​

Le widget Dépôts montre une ligne par dépôt : l'état de la CI, la dernière version et le nombre de tickets ouverts, les dépôts en échec d'abord, puis ceux en cours. Choisissez des dépôts dans ses réglages, ou laissez vide pour tous. Actualiser relit la forge aussitôt.

Scènes​

Déclencheurs​

  • Nouvelle version publiée : une version ou une préversion est sortie (filtre sur le dépôt et le type). Variables : le dépôt, le nom de la version, son étiquette, son auteur, son lien et un résumé prêt pour un message.
  • Nouveau ticket : quelqu'un a ouvert un ticket. Variables : le dépôt, le numéro, le titre, l'auteur, le lien et un résumé.
  • Nouvelle demande de fusion : quelqu'un a ouvert une demande de fusion. Mêmes variables.
  • CI en échec ou revenue au vert : la CI de la branche par défaut passe en échec, ou réussit de nouveau après un échec (filtre sur l'état). Variables : le dépôt, la branche, le commit, le lien et un résumé.

La première lecture d'un dépôt ne fait qu'apprendre son état : le passé n'est jamais annoncé. Les brouillons ne sont jamais annoncés. Trois événements d'une même sorte au plus sont envoyés par dépôt et par lecture (une rafale de tickets importés n'inonde pas les scènes). Ce qui a été vu est gardé par l'intégration : un redémarrage ne fait ni manquer un événement, ni l'annoncer deux fois.

Actions​

  • Lire un dépôt : les chiffres d'un dépôt suivi comme variables pour les actions suivantes : étoiles, forks, tickets et demandes de fusion ouverts, dernière version, état de la CI, CI réussie.

Idées de scènes​

  • Nouvelle version publiée d'un projet que vous auto-hébergez → envoyez un message avec son résumé : c'est l'heure de mettre à jour.
  • CI en échec ou revenue au vert, état « en échec » → passez la lampe du bureau en rouge ; état « revenue au vert » → repassez-la en blanc.
  • Chaque lundi matin → Lire un dépôt, puis envoyez-vous un message avec ses tickets et demandes de fusion ouverts.

Dépannage​

  • La forge ne répond pas : vérifiez l'adresse depuis la machine de Gladys (même port, même protocole) ; un Gladys sous Docker joint l'hôte par son adresse IP, pas par localhost.
  • L'adresse redirige : saisissez l'adresse https:// sur laquelle le navigateur arrive.
  • Jeton d'accès refusé : le jeton a été supprimé ou mal copié ; créez-en un nouveau.
  • Dépôt introuvable, ou privé sans jeton capable de le lire : vérifiez propriétaire/nom et les droits du jeton (read:repository).
  • Dépôt renommé ou transféré : saisissez son nouveau nom ; l'appareil reste.
  • Trop de requêtes : choisissez un intervalle plus long ou suivez moins de dépôts.
  • Les déclencheurs de tickets et de demandes de fusion ne se déclenchent jamais sur un dépôt privé dont les chiffres sont justes : il manque au jeton le droit read:issue.
  • Certificat refusé : un certificat auto-signé n'est pas accepté ; utilisez l'adresse http:// sur le réseau local.

Limites​

  • Lecture seule : aucune commande, rien n'est écrit sur la forge.
  • 20 dépôts au plus, lus toutes les 5 minutes au plus souvent : un événement arrive jusqu'à un intervalle plus tard.
  • La CI de la branche par défaut seulement ; un résultat de CI par commit (le statut combiné), pas un par workflow.
  • Tickets et demandes de fusion sont repérés par leur numéro : un ticket supprimé puis recréé n'est pas vu deux fois.
  • Les textes des appareils et des scènes suivent la langue de la configuration ; les noms des fonctionnalités sont fixés à l'ajout d'un appareil.
  • Développée et testée contre Forgejo 11.0 et Gitea 1.27 ; les versions plus anciennes avec la même API v1 devraient fonctionner, sans garantie.

Paramètres de configuration​

Voici les paramètres demandés par Forgejo / Gitea dans son écran de configuration dans Gladys.

ParamètreTypeObligatoireDescription
Votre forgesectionNonSaisissez l'adresse de votre Forgejo ou Gitea, ou codeberg.org. Un jeton n'est utile que pour les dépôts privés : créez-le dans Configuration → Applications avec les droits read:repository et read:issue. Listez ensuite les dépôts à suivre.
Adresse de la forgestringNonL'adresse avec laquelle vous ouvrez la forge : http://192.168.1.2:3000, https://git.example.com ou codeberg.org.
Jeton d'accès (facultatif)secretNonLa lecture seule suffit (read:repository, read:issue). Vide : dépôts publics seulement.
Dépôts à suivrestringNonpropriétaire/nom ou liens copiés du navigateur, séparés par des virgules. 20 au plus.
OptionssectionNon
Intervalle d'actualisationselectNonLa fréquence de lecture des dépôts : cinq requêtes par dépôt à chaque fois.
Langue des nomsselectNonLangue des noms des fonctionnalités (fixés à l'ajout d'un appareil), des états de CI et des textes de scène.

Comment installer Forgejo / Gitea dans Gladys​

  1. Dans Gladys, ouvrez Intégrations : Forgejo / Gitea apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
  2. Cliquez sur Installer. Gladys télécharge l'image Docker (ghcr.io/guim31/gladys-forgejo:1.0.1), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration).
  3. Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
  4. Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/guim31/gladys-forgejo.

Forgejo / Gitea nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.

Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.

À propos des intégrations externes​

Forgejo / Gitea est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par guim31, et non par l'équipe cœur de Gladys.

Inscrivez-vous à la newsletter Gladys Assistant

Quelques emails par mois sur les nouveautés et l'actualité du projet. Envoyés par Pierre-Gilles Leymarie, le fondateur du projet. Désinscription possible à tout moment 🙂