可以在持续投放工作流程中使用nix
吗?
我们正在使用semaphore作为我们的持续集成服务,现在我正在研究在成功构建时构建软件包。为此,我考虑使用nix
。
我不知道使用此软件包管理器设置持续交付管道的正确方法是什么。似乎这样的自动化过程将涉及:
rev
。{/ li>的fetchFromGithub
字段
但我不知道这是否合理,而且我也担心持续交付过程涉及手动步骤(让人类接受拉动请求)。
答案 0 :(得分:3)
可以在连续交付工作流程中使用nix吗?
是。它通常使用Hydra完成,这是一个使用Nix构建的CI系统。但是,可能可以用Semaphore做到这一点。
Semaphore CI提供了特定于语言的构建环境,但......它是running Ubuntu,所以理论上你可以这样做:
nix-build
构建您的包。这将创建一个指向构建输出的result
符号链接。如果您使用包执行此类操作,可以直接从nix-build
调用它,因为您不必将包依赖项作为参数提供:
{ pkgs ? import <nixpkgs> {} }:
let
stdenv = pkgs.stdenv;
...
in
stdenv.mkDerivation {
..
}
为每个版本安装Nix都是浪费,但也许你可以缓存Nix商店。请参阅this文章。