Python 是否有一种惯用的方法使用nix设置CI回归测试?

Python 是否有一种惯用的方法使用nix设置CI回归测试?,python,testing,continuous-integration,automated-tests,nix,Python,Testing,Continuous Integration,Automated Tests,Nix,我一直在使用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管理)执行从packa

我一直在使用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?谢谢。

您可以使用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 / (_) | |  | | (_| |_|
|_| |_|\___|_|_|\___( )   \_/\_/ \___/|_|  |_|\__,_(_)
                    |/                                

#在default.nix中构建所有内容
尼克斯大厦
#运行测试(使用-A确保包的正确顺序)
packages=(`nix build'-A hello-A figlet`)
hello=${packages[0]}
figlet=${packages[1]}
$hello/bin/hello |$figlet/bin/figlet
_   _      _ _                             _     _ _ 
| | | | ___| | | ___    __      _____  _ __| | __| | |
| |_| |/ _ \ | |/ _ \   \ \ /\ / / _ \| '__| |/ _` | |
|| | | | | | | | | | | | | | | | | | | | | | ||_|
|_| |_|\___|_|_|\___( )   \_/\_/ \___/|_|  |_|\__,_(_)
|/                                
充分披露:我正在开发一个不同的CI系统,以更好的方式解决问题,但我可能不知道每个解决方案