패키지를 빌드해야 할 때 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 배포를 구축하는 좋은 방법이 될 것입니다.