NixOpsマシンをデプロイするには、パッケージをビルドする必要があります。私は私の信頼できるプライベートHydraインスタンスで定期的に建物を作りたいと思っています。hydraでNixOpsデプロイメントを構築するには
私の現在のアプローチでは、このrelease.nix
ファイルが含まれていますが、うまくいきません。
{ nixpkgs ? <nixpkgs>, onlySystem ? true, extraModules ? [] }:
let
nixos = import "${nixpkgs}/nixos";
buildEnv = conf: (nixos {
configuration = conf;
});
buildTarget = m: let build = buildEnv (buildConf m); in
if onlySystem then build.system else build.vm;
buildConf = module: { ... }:
{
imports = [ module ] ++ extraModules;
};
in
{
machine1 = buildTarget ./machine1/configuration.nix;
machine2 = buildTarget ./machine2/configuration.nix
machine3 = buildTarget ./machine3/configuration.nix
machine4 = buildTarget ./machine4/configuration.nix
}
私はhereからそれをコピーしたとして、私は本当に、このコードを理解していません。
これはローカルでnix-build release.nix
を実行するとうまくいきますが、hydraでは完全なビルドが得られません。ときどきビルドがデキューしない(ビルドされない)場合もあり、さまざまなエラーメッセージで失敗することもあります。ヒドラ問題の再現性は何もないので(実際には完全なビルドは得られません)、NixOpsを構築するためのベストプラクティスは何かと思います。
デベロッパーにunfree
パッケージがありますのでご注意ください。ヒドラサーバーにオプションnixpkgs.config.allowUnfree = true;
が設定されています。
これは私のヒドラの失敗についての質問ではありませんが、Hydra CIを使ってNixOpsのデプロイメントを構築するにはどうすればよいでしょうか。