Skip to content

Latest commit

 

History

History
233 lines (152 loc) · 7.53 KB

source.markdown

File metadata and controls

233 lines (152 loc) · 7.53 KB

% Hydra % サニエ エリック % 2016年8月10日 - Tokyo NixOS Meetup

アジェンダ

  • ニュース
  • Hydra

ニュース

This month in Nix - News from the front 1/2

This month in Nix - News from the front 2/2

Hydra

Hydraとは 1/3

  • Nixプロジェクトの一部
  • NixOSとnixpkgsの継続インテグレーション兼ビルドファーム

Hydraとは 2/3

  • Nixベースの汎用的な
    • 継続インテグレーションシステム
    • ビルドファーム
  • NixOSでバイナリパッケージを利用できるのはHydraのおかげ

Hydraとは 3/3

  • Nixの自動化システム
  • nix-build on steroids

注意

  • 正式リリースされていない
  • ドキュメンテーションはほぼ存在しない
  • 設定はnix expressionで書く必要がある
  • 現時点で使うには努力がいる

特徴

Hydraの仕組み

  • .nixで定義されたパッケージセット(jobset)を評価します
  • jobsetはセット、バリューはnix expression
  • jobsetのすべてのnix expressionを評価

継続インテグレーション

  • 自動的にソースを取得とビルド
  • 前評価と比較
  • log保存
  • 失敗の場合にメンテナへメール送信

ビルドファーム

  • ビルドされたパッケージとクロージャー(パッケージと依存)をダウンロード可
  • 自動的にチャンネル生成
  • 任意チャンネル生成
  • リリース

Jobset

Hydraのコンポネント

  • サーバ: ビルド結果と情報を確認できるWebアプリケーション
  • queue-runner: インプットの変更をチェック、ビルドを管理する
  • evaluator: ジョブを評価する
  • Nix Daemon: パッケージと依存関係をビルド(Nix)

Hydraで生成できる物

  • Nixパッケージで生成できるすべての物
    • ソースパッケージ
    • バイナリパッケージ
    • マニュアル
    • ドキュメンテーション
    • ユニットテスト
    • ...

インストール

  • Nixが必要、NixOSがおすすめ

    • NixOSコンテナー内ではHydraを利用できません
  • NixOSのnixos-unstableであれば、モジュールがあります

    • NixOS 16.09に正式入る予定です
  • 基本設定(configuration.nix):

    services.hydra = {
      enable = true;
      hydraURL = "hydra.example.org";
      notificationSender = "[email protected]";
    };

NixOpsでインストール例

  • examples/single
  • examples/cluster

Webインターフェイス

Webインターフェイス - Project

  • enabled: プロジェクトを有効にする
  • identifier: 識別子
  • display name: Webインターフェイスに利用されるプロジェクト名
  • description: プロジェクト概要
  • homepage: プロジェクトのホームページ
  • owner: プロジェクトの所有者

Webインターフェイス - Jobset

  • state: Jobsetのステート
  • inputs: Jobsetの変数
    • 一つは評価するNix expressionのソース
    • 残りはNix expressionの引数
  • Nix expression: ビルドするNix expression (jobsetファイル)
    • FILE.nix in INPUT
  • shares: 利用できるCPUパワーの割合
  • 宣言的jobsetも利用できます

Jobsetソース: 三つのアプローチ

  • カスタムnixpkgsベース
  • 単独ソフトウェア
  • カスタムパッケージセット

nixpkgsベース

  • 変更したnixpkgsに独自release.nixを作成
  • Hydraでビルド

単独ソフトウェア

  • nixで管理するように
    • shell.nix: 開発環境用のnixファイル
    • build.nix: プロジェクトをビルドできるnixファイル
    • release.nix: Hydraのjobsetファイル
  • サンプル: binserver

カスタムパッケージセット

  • nixpkgsの構造を真似て作る
    • パッケージセットを定義し、外部ソースを取得
  • サンプル

リンク集

Questions - Free talk