MondialCanadaEuropeAsie-Pacifique
Se connecter

Nous publions ce que nous construisons et nous renvoyons les correctifs.

District AI fonctionne sur des logiciels à code source ouvert, et deux des outils que nous avons construits en chemin le sont aussi : un moniteur pour les pipelines qui livrent ce site, et le moteur de prise de rendez-vous derrière chaque réservation.

ven. 18 sept. 21 h 49
distronode-comGitLab CIDéployé, avec un échec
Push sur main7fb2b33eil y a 4 minutes
  • trigger:websitedeploy:origins réussi sur quatre originesDéployé
  • trigger:sentrysentry:apply a échouéÉchec
  • trigger:reporting_toolstrois tâchesRéussi

Pipeline planifié, il y a 25 minutes, en échec volontaire après correction d'une dérive. Non compté : cette veille suit les push.

district-schedulerGitHub ActionsDéployé
Push sur district63addd45il y a 7 heures
  • Docker publishimage poussée vers le registreDéployé
  • CIdeux tâchesRéussi
  • Audittrois tâchesRéussi

Trois exécutions de workflow issues d'un seul push, affichées en une seule ligne.

bridgewatch

Un moniteur de barre d'état pour GitLab CI et GitHub Actions, pour macOS et Linux. Nous l'avons écrit parce que tous les moniteurs essayés lisaient le pipeline le plus récent de la branche, qui chez nous est la planification horaire, et qu'aucun ne pouvait dire ce qu'un push avait fait dans son ensemble.

Il voit le push en entier

Sur GitLab, il lit chaque pipeline enfant derrière une tâche de déclenchement. Sur GitHub, où un seul push lance plusieurs exécutions de workflow qui s'ignorent entre elles, il les regroupe en une seule ligne. Dans les deux cas, il peut nommer la partie qui a échoué, et il remarque un workflow qui aurait dû s'exécuter et n'a jamais démarré.

Il distingue une planification d'un push

Un réconciliateur qui échoue volontairement ne devrait pas garder votre barre d'état au rouge toute la journée. Chaque veille suit les sources que vous choisissez.

Il répond à « est-ce déployé ? »

Vous nommez les tâches qui signifient « livré ». L'icône en rend compte, et le dit quand quelque chose a échoué autour.

Surveille
GitLab CI et GitHub Actions
Licence
Apache-2.0
Construit avec
Rust, Tauri 2, Svelte 5
Livré comme
Une application macOS signée, un .deb et une AppImage. L'outil en ligne de commande se compile à partir du code source.

bridgewatch sur GitHub

Pourquoi nous publions

Une entreprise de téléphonie qui demande à ses clients de lui faire confiance sur le lieu de traitement de leurs appels devrait être facile à vérifier. Les deux dépôts sont ceux à partir desquels nous déployons, avec leurs tickets, leurs journaux des modifications et leurs politiques de sécurité à découvert.

Il y a aussi une raison plus simple. Un fork aux correctifs privés doit être maintenu par la seule entreprise qui les détient. Renvoyer un correctif signifie que la prochaine version du projet d'origine le contient déjà, pour nous comme pour tout le monde.

Le trajet d'un correctif

CalnodeMoteur de prise de rendez-vous d'origineApache-2.0, Calnode/calnode
Fork, gardé publicCorrectifs renvoyés
District SchedulerNotre fork, en productionApache-2.0, distronode-corporation

Ce que le fork ajoute

Mode multilocataireDe nombreux espaces de travail isolés dans un seul processus adossé à PostgreSQL, la sécurité au niveau des lignes assurant l'isolation.Désactivé, il se comporte comme Calnode d'origine, à l'octet près.

District Scheduler

Notre fork de Calnode, le moteur de prise de rendez-vous derrière les réservations, les réunions et la prise de notes de District AI. Un seul binaire Go qui sert ses propres pages de réservation et sa console d'administration.

Les correctifs remontent

Un correctif pour Calnode va à Calnode, plutôt que de survivre comme correctif privé.

Le fork reste honnête

Notre ajout se trouve derrière un seul interrupteur. Désactivé, vous exécutez Calnode tel que publié.

Licence
Apache-2.0
Construit avec
Go, PostgreSQL
Projet d'origine
Calnode/calnode

District Scheduler sur GitHub

Sur quoi District AI fonctionne

Dix projets qui font un travail visible à chaque appel ou à chaque page, chacun exploité par nous sous la licence indiquée.

Logiciels à code source ouvert sur lesquels District AI fonctionne
LogicielCe qu'il fait iciLicence
LiveKitServeur média, passerelle SIP et cadre d'agents sur lequel la réceptionniste vocale est construite, sur nos propres nœuds dans chaque régionApache-2.0
PostgreSQL 17La base de données de chaque espace de travail, une instance par régionLicence PostgreSQL
k3sLa distribution Kubernetes sur laquelle tourne chacune des quatre origines, en nœud uniqueApache-2.0
CaddyTerminaison TLS et routage devant chaque origineApache-2.0
Next.js et ReactCe site, le portail client et le tableau de bordMIT
PrismaLa couche de base de données sous le portail et le tableau de bordApache-2.0
Tailwind CSSLa mise en forme du tableau de bordMIT
Grafana AlloyAchemine les métriques, les journaux et les événements des quatre grappes vers notre surveillanceApache-2.0
Silero VADDétermine quand un appelant commence et cesse de parlerMIT
CalnodeLe moteur de prise de rendez-vous dont District Scheduler est le forkApache-2.0

Licences telles que chaque projet les publie. Redis est absent à dessein : nous l'utilisons, et sa licence actuelle n'est pas une licence de code source ouvert.

Où nous trouver

Les tickets et les demandes de fusion sont les bienvenus sur l'un ou l'autre dépôt. Les signalements de sécurité vont à l'adresse indiquée dans la politique de sécurité de chaque dépôt, pas dans un ticket public.