Simple Science

La science de pointe expliquée simplement

# Informatique # Logique en informatique

Isabelle a un nouveau responsable de construction

La plateforme Isabelle améliore l'efficacité avec son nouveau gestionnaire de builds personnalisé.

Fabian Huch

― 7 min lire


La Révolution de la La Révolution de la Construction d'Isabelle l'efficacité de construction. Une grosse mise à jour pour améliorer
Table des matières

Isabelle est un outil puissant utilisé dans le monde des maths et de l’informatique. Il aide les chercheurs et les développeurs à vérifier la justesse des preuves. Pour que tout fonctionne bien, la plateforme Isabelle avait besoin d'un gestionnaire de build - un système qui assemble divers composants pour qu'ils fonctionnent ensemble sans accrocs. Pense à un chef qui prépare un repas de plusieurs plats, en s'assurant que tous les plats sortent en même temps et à la bonne température.

L'Ancienne Méthode : Serveur de Build Jenkins

Pendant longtemps, Isabelle a compté sur Jenkins comme gestionnaire de build. Jenkins est un outil populaire pour l'intégration continue, ce qui signifie qu'il aide à automatiser le processus de test et de construction de logiciels. Cependant, comme un chef qui ne trouve pas sa spatule préférée, Jenkins avait quelques lacunes. Il avait du mal à gérer efficacement les builds soumis par les utilisateurs, ce qui le rendait lent et parfois peu fiable. Les tâches échouaient de manière inattendue et tout le système ralentissait, ce qui faisait tirer les cheveux des utilisateurs d’exaspération.

Le Besoin de Changement

Avec la complexité croissante de la plateforme Isabelle, rester avec Jenkins, c'était comme essayer de conduire une voiture de sport avec un pneu crevé. La communauté a réalisé qu'elle avait besoin d'une nouvelle approche. Ils voulaient quelque chose qui puisse gérer les demandes uniques d’Isabelle sans les maux de tête causés par l'ancien système Jenkins. Donc, ils ont décidé de développer un nouveau gestionnaire de build en utilisant l'environnement de programmation d'Isabelle.

Présentation du Nouveau Gestionnaire de Build Isabelle

Le nouveau gestionnaire de build Isabelle est entièrement construit dans l'environnement de programmation Isabelle/Scala. C'était un gros changement. Au lieu de s'appuyer sur un outil extérieur, ils ont créé un système qui comprend le fonctionnement interne d'Isabelle.

La Structure du Gestionnaire de Build

Pense au nouveau gestionnaire de build comme à une équipe bien coordonnée de travailleurs dans une usine. Chaque travailleur a un boulot spécifique :

  1. Poller : Ce travailleur écoute les mises à jour. Quand quelque chose change dans le dépôt d'Isabelle ou dans des composants supplémentaires, il met en attente les tâches nécessaires.

  2. Minuteur : Le minuteur fixe des tâches à exécuter à des moments précis, comme un boulanger qui règle un minuteur pour une tarte plutôt que chaque fois que quelqu'un entre dans la boulangerie.

  3. Exécuteur : Ce travailleur vérifie quelles tâches sont prêtes. S'il trouve une tâche prête, il commence le boulot. Si une tâche prend trop de temps et expire, l'exécuteur peut intervenir, comme un prof qui s'arrête si un élève met trop de temps à finir un test.

  4. Serveur Web : Pense à ça comme au manager qui garde tout le monde informé. Il fournit des pages web qui affichent l'état actuel des builds et des journaux pour que les utilisateurs puissent voir ce qui se passe.

Exécuter un Build

Quand vient le moment d'exécuter un build, le process est plus organisé que jamais. Le gestionnaire de build reçoit des tâches qui détaillent ce qu'il faut construire. Ensuite, il fait un peu de ménage en créant une copie autonome d'Isabelle et de ses composants nécessaires. C'est comme préparer un espace de travail propre avant de commencer un projet.

Le vrai build se déroule en quatre étapes simples :

  1. L'exécuteur rassemble tout ce qu'il faut pour le build, comme faire les courses pour les ingrédients avant de cuisiner.
  2. Il crée l'environnement nécessaire pour le build et transfère tout à sa place, comme préparer les casseroles et poêles.
  3. Le build s'exécute à distance, surveillé via un terminal, ce qui permet aux utilisateurs de voir les mises à jour en temps réel, un peu comme regarder un show de cuisine où tu peux voir tout se passer en direct.
  4. Après avoir terminé le build, les résultats sont enregistrés et le nettoyage nécessaire est fait.

Présence Web Dynamique

Le nouveau gestionnaire de build propose une interface web conviviale. C'est comme avoir un panneau de contrôle où tu peux voir tous tes appareils d'un coup d'œil. Les utilisateurs peuvent vérifier le statut des builds, voir ceux qui sont en cours, et même les annuler si besoin.

En utilisant du HTML statique et un peu de JavaScript, le serveur web offre une expérience fluide sans que les utilisateurs aient besoin de télécharger des logiciels compliqués.

Soumission des Builds

Les utilisateurs peuvent soumettre leurs builds de la même manière que tu passerais une commande dans un resto. Ils n'ont qu'à se connecter au serveur via SSH, ce qui est un peu comme appeler le resto et donner ta commande. Le système utilise isabelle.Sync pour s'assurer que tout est à jour, et une fois la tâche enregistrée, les utilisateurs reçoivent un lien privé pour suivre leurs commandes.

Configuration du Système : Une Configuration Simple

Le gestionnaire de build nécessite une infrastructure minimale. C'est comme mettre en place une petite cuisine par rapport à une grande cuisine de restaurant. Chaque utilisateur a une configuration individuelle avec des préférences à ajuster, mais ce n'est rien qui nécessite un diplôme en science fusée.

Exécuter des Builds en Parallèle

Le nouveau système permet aussi d'exécuter plusieurs builds en même temps. C'est comme avoir plusieurs chefs dans la cuisine, chacun travaillant sur différents plats sans se gêner. Pendant qu'un chef prépare une salade, un autre peut cuire un steak, permettant un processus plus efficace.

Interface Utilisateur : Gardons Ça Simple

L'interface utilisateur du nouveau gestionnaire de build est conçue pour la simplicité. Elle ressemble à l'ancienne mise en page de Jenkins mais avec une touche moderne. Les utilisateurs peuvent rapidement jeter un œil aux statistiques générales, voir combien de builds sont en cours, et accéder aux journaux des builds.

Avec quelques clics, n'importe qui peut voir l'état de ses builds, quelles sessions se sont terminées, et si quelque chose a mal tourné en cours de route. Cette simplicité est essentielle car elle permet aux utilisateurs de se concentrer sur leur travail plutôt que de devoir comprendre comment naviguer dans le système.

Conclusion : Un Nouveau Départ

Le nouveau gestionnaire de build représente une amélioration significative par rapport à l'ancien système Jenkins. Il simplifie le processus de build, rendant ça beaucoup plus facile pour les utilisateurs de faire leur boulot. À mesure que la plateforme évolue, de nouvelles fonctionnalités peuvent être ajoutées pour soutenir encore plus de capacités.

À l'avenir, le gestionnaire de build vise à rendre la recherche plus reproductible et à aider les utilisateurs à gérer leurs données de manière efficace. D’augmenter et diminuer les ressources de manière dynamique pourrait être à l'horizon, permettant une utilisation optimale du matériel tout en gardant le système opérationnel.

Avec le nouveau gestionnaire de build en place, la communauté Isabelle a fait un grand pas vers un flux de travail plus organisé et efficace. Qui savait que construire pouvait être si amusant ?

Source originale

Titre: Isabelle as Systems Platform: Managing Automated and Quasi-interactive Builds

Résumé: Interactive theorem provers are complex systems that require sophisticated platform efforts - and hence systems programming environments - to manage effectively. The Isabelle platform exemplifies this with its Isabelle/Scala systems programming environment, which has proven to be very successful. In contrast, much of the project infrastructure has relied on external tooling in the past, despite shortcomings. For continuous integration, the previous system employed a Jenkins server, which did not adequately support user-submitted Isabelle builds and faced issues with reliability and performance. In this work, we present our design and implementation of a new Isabelle build manager that replaces the old continuous integration system, fully implemented within Isabelle/Scala. We illustrate how our implementation utilizes different modules of the environment, which supported all aspects of the build manager well.

Auteurs: Fabian Huch

Dernière mise à jour: Dec 17, 2024

Langue: English

Source URL: https://arxiv.org/abs/2412.13083

Source PDF: https://arxiv.org/pdf/2412.13083

Licence: https://creativecommons.org/licenses/by/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Articles similaires