gpt4 book ai didi

continuous-deployment - 在持续交付工作流程中使用 nix

转载 作者:行者123 更新时间:2023-12-01 13:29:10 25 4
gpt4 key购买 nike

可以nix用于持续交付工作流程?

我们正在使用 semaphore作为我们的持续集成服务,现在我正在研究在成功构建后构建包。为此,我正在考虑使用 nix .

我不知道用这个包管理器建立持续交付管道的正确方法是什么。似乎这样的自动化过程将涉及:

  • 创建 nixpkgs 的分支存储库(在 CI 服务器中)。
  • 更新rev fetchFromGithub 的字段.
  • (自动)提交拉取请求。

  • 但我不知道这是否有意义,而且我担心持续交付过程涉及手动步骤(让人工批准拉取请求)。

    最佳答案

    Can nix be used in a continuous-delivery workflow?



    是的。通常使用 Hydra 完成。 ,一个使用 Nix 构建的 CI 系统。但是,使用 Semaphore 可以做到这一点。

    Semaphore CI 提供了特定于语言的构建环境,但是……它是 running Ubuntu ,所以理论上你可以这样做:
  • 安装 Nix好像它是一种依赖。见 this文章。
  • 添加你的 Nix 包,我想你可以用 Git 来做。你真的不需要克隆 Nixpkgs。
  • 使用nix-build构建你的包。这将创建一个 result构建输出的符号链接(symbolic link)。
  • 使用 git-deploy 进行部署.

  • 如果你对你的包做这样的事情,你可以直接从 nix-build 调用它。因为您不必提供包依赖项作为参数:
    { pkgs ? import <nixpkgs> {} }:
    let
    stdenv = pkgs.stdenv;
    ...
    in
    stdenv.mkDerivation {
    ..
    }

    优化

    为每个构建安装 Nix 是一种浪费,但也许您可以缓存 Nix 存储。见 this文章。

    关于continuous-deployment - 在持续交付工作流程中使用 nix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46861131/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com