可以nix
在持续交付工作流程中使用吗?
我们使用信号量作为我们的持续集成服务,现在我正在研究在成功构建后构建包。为此,我正在考虑使用nix
.
我不知道用这个包管理器建立持续交付管道的正确方法是什么。似乎这样的自动化过程将涉及:
- 创建 nixpkgs存储库的分支(在 CI 服务器中)。
- 更新
rev
字段fetchFromGithub
。 - (自动)提交拉取请求。
但我不知道这是否有意义,而且我担心持续交付过程涉及手动步骤(让人工批准拉取请求)。
可以nix
在持续交付工作流程中使用吗?
我们使用信号量作为我们的持续集成服务,现在我正在研究在成功构建后构建包。为此,我正在考虑使用nix
.
我不知道用这个包管理器建立持续交付管道的正确方法是什么。似乎这样的自动化过程将涉及:
rev
字段fetchFromGithub
。但我不知道这是否有意义,而且我担心持续交付过程涉及手动步骤(让人工批准拉取请求)。
nix 可以用于持续交付工作流程吗?
是的。它通常使用Hydra完成,这是一个使用 Nix 构建的 CI 系统。但是,使用 Semaphore可以做到这一点。
Semaphore CI 提供了特定于语言的构建环境,但是......它运行的是 Ubuntu,所以理论上你可以做这样的事情:
nix-build
构建你的包。这将创建一个result
指向构建输出的符号链接。如果你对你的包做这样的事情,你可以直接调用它,nix-build
因为你不必提供包依赖项作为参数:
{ pkgs ? import <nixpkgs> {} }:
let
stdenv = pkgs.stdenv;
...
in
stdenv.mkDerivation {
..
}
为每个构建安装 Nix 是一种浪费,但也许您可以缓存 Nix 存储。见这篇文章。