Hydra
Nix上に構築したCIツール
雑に言うとJenkinsとかの代替品mrsekut.icon
Nixを使用したprojectに対してCI管理ができる
github
docs
IntroductionにHydraがどういうものなのか書いてる
これ読むのが一番わかりやすかったmrsekut.icon
#WIP
現状はNixOSしかサポートしていない
CIを実行するOSの話をしていると思うmrsekut.icon
Nix言語でjobと依存関係の設定を書く
Nixの再現性を活用してCIする
まっさらな状態から環境を作れる
従来のCIツールの問題点 ref
Makeのような他のbuild management toolではincremental buildの結果を信用できない
incremental buildとfull buildで結果が変わったりする
Jenkins, CruiseControl Tinderbox, Sisyphus, Anthill and BuildBotなどの他のCIサービスの問題点
ビルド環境のmanageをしない
compilerやlibraryなどの依存関係などを管理していない
多くの場合、手動でやる必要があり、versionを上げたあとに元に戻すなどが困難
ビルド環境が複数ある場合、そこで使うcompilerのupgradeなどを個々でやる必要がある
build optionや、そのproductがsupportするversionなどが多い場合に対応できない
例えば、JS向けのframeworkを作っていてsupportするJSのversionが複数あるなど
Hydraを使ってCIしているものの例
https://github.com/NixOS/patchelf
github actionsの中とかこことかに設定を書いている
どこを見たらわかるのかいまいちわからないがNixOSやnipkgsのCIとしてもHydraが使われているらしい
https://hydra.nixos.org/build/158944808/download/1/hydra/#hydra-at-nixosorg
https://hydra.nixos.org/jobset/nixpkgs/trunk
https://hydra.nixos.org/project/nixpkgs
設定を書いている場所を知りたいmrsekut.icon
https://hydra.nixos.org/
https://status.nixos.org/
https://github.com/nlewo/hydra-cli
CLIでHydraの操作をする
https://github.com/Tokyo-NixOS/presentations/blob/master/2017/03/source.markdown
古い
The Nix Build Farm: A Declarative Approach toContinuous Integration
https://edolstra.github.io/pubs/buildfarm-wasdett2008-final.pdf
https://github.com/Tokyo-NixOS/presentations/blob/6e08c2a1bf9b991fd1f8e48cfce73465ffcd2c39/2016/02-osc/source.markdown
https://github.com/Tokyo-NixOS/presentations/blob/6e08c2a1bf9b991fd1f8e48cfce73465ffcd2c39/2016/04-wug/source.markdown
https://nixos.wiki/wiki/Hydra