Continuous deployment 在连续交付工作流中使用nix
Continuous deployment 在连续交付工作流中使用nix,continuous-deployment,continuous-delivery,nix,semaphore-ci,Continuous Deployment,Continuous Delivery,Nix,Semaphore Ci,nix能否用于连续交付工作流 我们使用的是持续集成服务,现在我正在研究如何在成功构建的基础上构建包。为此,我正在考虑使用nix 我不知道用这个包管理器设置连续交付管道的正确方法是什么。这种自动化过程似乎包括: 创建存储库的分支(在CI服务器中) 更新fetchFromGithub的rev字段 (自动)提交拉取请求 但我不知道这是否有意义,而且我担心连续交付过程涉及到手动步骤(让一个人批准拉请求) nix能否用于连续交付工作流 对。它通常是用Nix构建的CI系统来完成的。但是,使用信号量也可以做到
nix
能否用于连续交付工作流
我们使用的是持续集成服务,现在我正在研究如何在成功构建的基础上构建包。为此,我正在考虑使用nix
我不知道用这个包管理器设置连续交付管道的正确方法是什么。这种自动化过程似乎包括:
fetchFromGithub
的rev
字段nix build
构建包。这将创建指向生成输出的结果
符号链接nix build
调用它,因为不必将包依赖项作为参数提供:
{ pkgs ? import <nixpkgs> {} }:
let
stdenv = pkgs.stdenv;
...
in
stdenv.mkDerivation {
..
}
{pkgs?导入{}}
让
stdenv=pkgs.stdenv;
...
在里面
stdenv.mk{
..
}
优化
为每个构建安装Nix是浪费时间的,但也许您可以缓存Nix存储。参见文章。太好了。不过有一个问题。您将结果包发布到哪里?我希望构建的包可以提供给任何使用nix的人。啊。。。。嗯,通过提交一个pull请求将包添加到Nix packages集合中,这将触发Hydra来构建它。事实上,您将在pull请求中看到构建状态。然后,评审员将对其进行检查并批准,或者不批准。因此,是的,拉动请求批准是手动的。请注意,提交应该在主分支上。Hydra如何处理连续交付?它所做的只是运行
nix build
和一个web界面来查看构建日志。