% Hydra % サニエ エリック % 2017年3月24日 - Tokyo NixOS Meetup
- Nixはパッケージマネジャーを超えて...
- 万能ビルドシステムであります
- クリーンビルド
- ビルドの再現性
- ビルドコンポネントの再利用
- 何でもビルドできます
- Python, Ruby, NodeJSなどパッケージ
- この資料
- 静的ウェブサイト
- Dockerイメージ
- アンドロイドアプリケーション
- マニュアル・ドキュメンテーション
- ISOイメージ
- テスト
- メトリックス
- Hydraの正式リリースはない
- ドキュメンテーションはほぼ存在しない
- Jobsetはnix言語で書く必要がある
- hydra.nixos.org で利用される前提で開発されています
- 現時点で使うには多少努力がいる
- Nixのメインプロジェクトの一つ
- Nixの自動化ツール+α
- NixOS/nixpkgsの継続インテグレーションとビルドファーム
- Nix/NixOSでバイナリパッケージを利用できるのはHydraのおかげ
- 環境の管理
- 分散ビルド
- マルチプラットフォーム
- パッケージのバリエーション
- 自動的にソースを取得とビルド
- 前評価と違いを比較
- ビルドログ保存
- 失敗の場合にメンテナへメール送信
- カスタムビルドプロダクト
- ビルドされたパッケージとクロージャー(パッケージと依存)をダウンロード可
- カスタムビルドプロダクト
- Nixチャンネル生成
- 汎用性: いろいろな言語や技術対応
- 変動性: 複数バージョン、環境サポート
- マルチプラットフォーム
- クロスコンパイル
- 機能別でビルドマシン選択
- 冗長性: クラスター、分散ビルド対応
- 拡張性、カスタマイズ性
- Server: ビルド結果と情報を確認できるWebアプリケーション
queue-runner
: インプットの変更をチェック、ビルドを管理するevaluator
: ジョブを評価する- Nix Daemon: パッケージと依存関係をビルド(Nix)
.nix
で定義されたJobsetを評価します- jobsetはアトリビュートセット
{ ... }
でバリューはパッケージ - すべてのJobsetパッケージをビルド
- セット(動的生成可)
- 例、Hydra用の
- nixpkgsの
pkgs.releaseTools
にヘルパー関数aggregate
: 複数のジョブを一つにまとめます
-
Nixが必要、NixOSで簡単にインストール
- NixOSコンテナー内ではHydraを利用できません
- 専用モジュール
-
基本設定(
configuration.nix
):services.hydra = { enable = true; hydraURL = "hydra.example.org"; notificationSender = "[email protected]"; };
examples/single
examples/cluster
- Perlで書かれています
- Projects > Jobsets > Evaluations > Jobs
enabled
: プロジェクトを有効にするidentifier
: 識別子display name
: Webインターフェイスに利用されるプロジェクト名description
: プロジェクト概要homepage
: プロジェクトのホームページowner
: プロジェクトの所有者
- state: Jobsetのステート
- inputs: Jobsetの変数
- 一つは評価するNix expressionのソース
- 残りはNix expressionの引数
- Nix expression: ビルドするNix expression (jobsetファイル)
FILE.nix
inINPUT
- shares: 利用できるCPUパワーの割合
- 宣言的jobsetも利用できます
- カスタムnixpkgsベース
- 単独ソフトウェア
- カスタムパッケージセット
- 変更したnixpkgsに独自
release.nix
を作成 - Hydraでビルド
- nixで管理するように
shell.nix
: 開発環境用のnixファイルbuild.nix
: プロジェクトをビルドできるnixファイルrelease.nix
: Hydraのjobsetファイル
- サンプル: binserver
-
2016年
-
2014年
-
2013年
-
2008年
-
2007年