【问题标题】:Is there an idiomatic way to setup CI regression tests with nix?有没有一种惯用的方法来使用 nix 设置 CI 回归测试?
【发布时间】:2020-09-29 03:04:11
【问题描述】:

我一直在使用 nix 设置 GitLab CI。我目前的方法是拥有一个default.nix,其中包含 git 存储库提供的包。

{
    package_a = import ./package_a/default.nix;
    package_b = import ./package_b/default.nix;
}

然后 CI 可以仅调用 nix-build 并构建/检查所有内容。

问题来自回归测试。我需要运行一个 python 回归测试,它使用 package_c 中的文件(尚未由 nix 管理)执行从 package_a 导出的内容。

我考虑过的两种可能性是在检查阶段手动执行的 mkDerivation,或者将回归测试设置为空 python 包的测试的 buildPythonPackage。两者看起来都像是一种黑客行为。

有没有一种惯用的方式来使用 nix 进行设置?谢谢。

【问题讨论】:

    标签: python testing continuous-integration automated-tests nix


    【解决方案1】:

    您可以使用 bash 数组使其工作,类似于:

    # build everything in default.nix
    nix-build
    
    # run the tests (use -A to assure the correct order of packages)
    packages=(`nix-build '<nixpkgs>' -A hello -A figlet`)
    hello=${packages[0]}
    figlet=${packages[1]}
    $hello/bin/hello | $figlet/bin/figlet
     _   _      _ _                             _     _ _ 
    | | | | ___| | | ___    __      _____  _ __| | __| | |
    | |_| |/ _ \ | |/ _ \   \ \ /\ / / _ \| '__| |/ _` | |
    |  _  |  __/ | | (_) |   \ V  V / (_) | |  | | (_| |_|
    |_| |_|\___|_|_|\___( )   \_/\_/ \___/|_|  |_|\__,_(_)
                        |/                                
    
    

    全面披露:我正在开发一个不同的 CI 系统以更好地解决问题,但我可能并不了解所有解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 2012-10-14
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      相关资源
      最近更新 更多