イザベルが新しいビルドマネージャーをゲット!
Isabelleプラットフォームは、新しいカスタムビルドマネージャーで効率を向上させるよ。
― 1 分で読む
目次
イザベルは数学とコンピュータサイエンスの世界で使われる強力なツールだよ。研究者や開発者が証明の正しさを確認するのを手助けしてくれる。イザベルプラットフォームがスムーズに動くためには、ビルドマネージャーが必要だったんだ – いろんなコンポーネントを組み合わせてうまく動くようにするシステムね。料理人が複数のコース料理を作るとき、すべての皿が適切なタイミングと温度で出てくるようにする感じ。
古い方法:Jenkinsビルドサーバー
長い間、イザベルはJenkinsをビルドマネージャーとして頼ってた。Jenkinsは連続統合のための人気ツールで、ソフトウェアのテストとビルドのプロセスを自動化するのを手伝ってくれる。でも、お気に入りのヘラが見つからない料理人みたいに、Jenkinsにはいくつかの欠点があったんだ。ユーザーが提出したビルドをうまく処理できなくて、遅くて時々信頼性がなかった。ジョブが予期せず失敗して、全体のシステムが遅くなって、ユーザーはイライラしてた。
変化の必要性
イザベルプラットフォームの複雑さが増すにつれて、Jenkinsに固執するのは、パンクしたタイヤでスポーツカーを運転するようなものだった。コミュニティは新しいアプローチが必要だと認識したんだ。彼らはイザベルの独自の要求にうまく対応できるものが欲しくて、老朽化したJenkinsのセットアップによる頭痛の種は避けたかった。だから、イザベルのプログラミング環境を使って新しいビルドマネージャーを開発することにした。
新しいイザベルビルドマネージャーの紹介
新しいイザベルビルドマネージャーは、イザベル/スカラのプログラミング環境内で完全に構築されたんだ。これは大きなシフトだったよ。外部ツールに頼る代わりに、イザベルの内部動作を理解するシステムを作ったんだ。
ビルドマネージャーの構造
新しいビルドマネージャーは、工場内のよく協調された労働者のチームのように考えてみて。各労働者には特定の仕事があるんだ:
-
ポーラー: この労働者は更新を待ち受けてる。イザベルリポジトリや追加コンポーネントに何か変化があったら、必要なジョブのタスクをキューに入れる。
-
タイマー: タイマーは特定の時間にタスクを実行するよう設定する。まるで、パン屋でパイを焼くときにタイマーをセットするみたいに。
-
ランナー: この労働者はどのタスクが準備できているかをチェックする。準備ができたタスクがあれば、そのジョブを始める。ジョブが長すぎてタイムアウトすると、ランナーは中断できる。まるで、学生がテストを終えるのに時間がかかりすぎているときに先生が介入するみたいに。
-
ウェブサーバー: これをみんなに情報を提供するマネージャーのように考えてみて。ビルドとログの現在の状態を表示するウェブページを提供して、ユーザーが何が起こっているかを見ることができる。
ビルドの実行
ビルドを実行する時、プロセスはかつてないほど整然としている。ビルドマネージャーは、何をビルドする必要があるか詳細を示すタスクを受け取る。その後、イザベルと必要なコンポーネントの自己完結型コピーを作ることでちょっとした整理を行う。これは、プロジェクトを始める前にクリーンな作業スペースをセットアップするのに似ている。
実際のビルドは、四つの簡単なステップで行われる:
- ランナーはビルドに必要なものをすべて集める。料理の前に材料を買いに行くみたいに。
- ビルドに必要な環境を作り、すべてを適所に移す。鍋やフライパンを用意するみたいに。
- ビルドはリモートで実行され、ターミナルを通じて監視される。これにより、ユーザーはリアルタイムで更新を確認できる。まるで、料理番組を見ているみたいに、すべてがライブで見える。
- ビルドが完了した後、結果が記録され、必要なクリーンアップが行われる。
ダイナミックなウェブプレゼンス
新しいビルドマネージャーはユーザーフレンドリーなウェブインターフェースを備えている。これは、すべてのデバイスを一目で見れるコントロールパネルのようなもの。ユーザーはビルドの状態を確認し、どのビルドが実行中かを見たり、必要に応じてキャンセルしたりできる。
静的なHTMLと少しのJavaScriptを使って、ウェブサーバーは複雑なソフトウェアをダウンロードする必要なく、スムーズな体験を提供している。
ビルドの提出
ユーザーは、レストランで注文を出すみたいにビルドを提出できる。サーバーにSSHで接続するだけでいい。これはレストランに電話して注文するのと似てる。システムはisabelle.Syncを使って、すべてが最新であることを確保し、一度タスクが登録されるとユーザーは私的なリンクを受け取って自分の注文をモニターできる。
システム構成:シンプルなセットアップ
ビルドマネージャーは最小限のインフラを必要とする。これは、大きなレストランキッチンに比べて小さなキッチンを設置するようなもの。各ユーザーは設定が必要な個別の環境があるけど、ロケット工学の学位が必要なわけじゃない。
ビルドの並行実行
新しいシステムは同時に複数のビルドを実行することもできる。これは、キッチンで別々の料理に取り組む複数のシェフがいるようなもので、互いの邪魔をしない。あるシェフがサラダを準備している間に、別のシェフがステーキを焼いていて、より効率的なプロセスが可能になる。
ユーザーインターフェース:シンプルさを保つ
新しいビルドマネージャーのユーザーインターフェースはシンプルさを追求して設計されている。古いJenkinsのレイアウトに似てるけど、アップデートされた感じを提供する。ユーザーは一般的な統計をすぐに確認でき、現在どれだけのビルドが実行中かをチェックでき、ビルドログにもアクセスできる。
ほんの数クリックで、誰でも自分のビルドの状況を確認でき、どのセッションが完了したか、途中で何かがうまくいかなかったかを確認できる。このシンプルさは重要で、ユーザーがシステムをナビゲートする方法を考えるのではなく、自分の仕事に集中できるから。
結論:新しいスタート
新しいビルドマネージャーは古いJenkinsシステムに対して大きな改善を示している。ビルドプロセスを効率化して、ユーザーがタスクをこなすのをずっと簡単にしてくれる。プラットフォームが進化し続ける中で、新しい機能が追加されてさらに多くの機能をサポートできるようになるだろう。
将来的には、ビルドマネージャーは研究をもっと再現可能にして、ユーザーがデータを効果的に管理するのを手助けすることを目指している。リソースをダイナミックに拡張・縮小できるようになるかもしれなくて、ハードウェアを最適に利用しながらシステムがスムーズに動き続けることができる。
新しいビルドマネージャーが整備されて、イザベルコミュニティはもっと整理された効率的なワークフローに向けて大きな一歩を踏み出したよ。ビルドがこんなに楽しいなんて、誰が思っただろうね?
タイトル: Isabelle as Systems Platform: Managing Automated and Quasi-interactive Builds
概要: 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.
最終更新: Dec 17, 2024
言語: English
ソースURL: https://arxiv.org/abs/2412.13083
ソースPDF: https://arxiv.org/pdf/2412.13083
ライセンス: https://creativecommons.org/licenses/by/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。