Python 是否有一种惯用的方法使用nix设置CI回归测试?
我一直在使用nix设置GitLab 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
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系统,以更好的方式解决问题,但我可能不知道每个解决方案