% Hydra % サニエ エリック % 2016年8月10日 - Tokyo NixOS Meetup
- ニュース
- Hydra
- Deploying a NixOS VM on Microsoft Azure
- Building mobile apps with Nix
- Nix support in Travis
- Too many issues open
- IFD nix#954
- Nix C++ migration is progressing nix#341
- Nix and IPFS nix#859
- Nix Docker image updated
- VulNix 1.0 released!
- Purely Functional Linux with NixOS
- Nix on Vultr
- Nixプロジェクトの一部
- NixOSとnixpkgsの継続インテグレーション兼ビルドファーム
- Nixベースの汎用的な
- 継続インテグレーションシステム
- ビルドファーム
- NixOSでバイナリパッケージを利用できるのはHydraのおかげ
- Nixの自動化システム
nix-build
on steroids
- 正式リリースされていない
- ドキュメンテーションはほぼ存在しない
- 設定はnix expressionで書く必要がある
- 現時点で使うには努力がいる
- 汎用性: いろいろな言語や技術対応
- 変動性: 複数バージョン、環境サポート
- マルチプラットフォーム
- クロスコンパイル
- 機能別でマシン選択
- 冗長性: クラスター、分散ビルド対応
- 拡張性、カスタマイズ性
.nix
で定義されたパッケージセット(jobset)を評価します- jobsetはセット、バリューはnix expression
- jobsetのすべてのnix expressionを評価
- 自動的にソースを取得とビルド
- 前評価と比較
- log保存
- 失敗の場合にメンテナへメール送信
- ビルドされたパッケージとクロージャー(パッケージと依存)をダウンロード可
- 自動的にチャンネル生成
- 任意チャンネル生成
- リリース
- セット(関数で生成可能)
- 例、Hydra用の
- nixpkgsの
pkgs.releaseTools
にヘルパー関数aggregate
: 複数のジョブを一つにまとめます
- サーバ: ビルド結果と情報を確認できるWebアプリケーション
queue-runner
: インプットの変更をチェック、ビルドを管理するevaluator
: ジョブを評価する- Nix Daemon: パッケージと依存関係をビルド(Nix)
- Nixパッケージで生成できるすべての物
- ソースパッケージ
- バイナリパッケージ
- マニュアル
- ドキュメンテーション
- ユニットテスト
- ...
-
Nixが必要、NixOSがおすすめ
- NixOSコンテナー内ではHydraを利用できません
-
NixOSの
nixos-unstable
であれば、モジュールがあります- NixOS 16.09に正式入る予定です
-
基本設定(
configuration.nix
):services.hydra = { enable = true; hydraURL = "hydra.example.org"; notificationSender = "[email protected]"; };
examples/single
examples/cluster
- Perlで書かれています
- Elmでテンプレートを書き直し中
- Projects - Jobsets
- ProjectはJobsetの箱です
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年