このプロジェクトについて

Freshmaker は、ソフトウェアの依存関係が更新された後に、さまざまなアーティファクトを自動的に再構築するために設計されたサービスです。例えば、RPM の .spec ファイルが更新されたり、RPM が Bodhi を通じて stable にプッシュされたりすると、モジュールを再構築します。また、コンテナ内の RPM が更新された場合、コンテナイメージも再構築します。このサービスは、アーティファクトの再構築とその理由に関する情報を取得するための REST API を提供し、これらのイベントをメッセージバスに送信します。 アーキテクチャ的には、Freshmaker は Event-Handler パターンに基づいています。イベントは、dist-git、Koji、Bodhi などの他のサービスから受信した fedmsg メッセージです。ハンドラーは、Freshmaker コアが提供する高レベル API を使用してアーティファクトを再構築する小さなクラスです。また、このシステムは、アーティファクト間の依存関係を追跡するための高レベル API も提供しており、これにより再構築プロセスが効率的かつ信頼性のあるものになります。 ワークフローは、アーティファクトの更新に関する新しい fedmsg メッセージを待ち、これらのメッセージを Event オブジェクトに解析し、特定のハンドラーでこれらのイベントを処理することから始まります。これらのハンドラーは、再構築が必要なアーティファクトのリストを特定し、正しいビルド順序を確保するためにツリー状の構造で再構築を計画し、前提条件(例えば、更新された RPM リポジトリの生成)を準備し、最後に再構築を開始します。Freshmaker には、アーティファクトとその依存関係のデータベース管理、および Koji や ODCS との統合によるビルドの開始など、一般的なタスクに対する組み込みサポートが含まれています。