Вы можете сделать что-то вроде этого:
exec > >(tee logfile) 2>&1
Это перенаправит потоки вывода и ошибок оболочки в подстановку процесса >(tee logfile)
, которая сохранит их в logfile
, а также выведет их на терминал.
Как правильно указывает пользователь mosvy в комментариях ниже , любой вывод программы будет производиться так, как если бы он был перенаправлен в файл. Если утилита делает разницу между выводом в файл и на терминальное устройство, то вывод будет отличаться от того, что вы могли ожидать. Некоторые программы, требующие терминала, могут вообще не работать.
Вы также можете использовать утилиту script
, которая сама по себе запускает интерактивную оболочку, которая регистрируется в файле. См. руководство по script
.
Разобрались , наконец:
build:
stage: test
image: nixos/nix
before_script:
- echo system-features = kvm | tee -a /etc/nix/nix.conf
- echo {} | tee common.nix hardware-configuration.nix host.nix
- nix-env --install --attr nixpkgs.nixos-rebuild nixpkgs.man
script:
- nix-build '<nixpkgs/nixos>' -I nixos-config=ci.nix
cache:
- key:
files:
- configuration.nix
paths:
- /nix/store
ci.nix переопределяет некоторые вещи для возможности сборки:
{ lib,... }: {
imports = [./configuration.nix ];
boot = lib.mkForce { };
environment.systemPackages = lib.mkForce [ ];
}
Предупреждение :Во избежание нехватки места на диске (или необходимости создавать и поддерживать свои собственные бегуны )я очистил environment.systemPackages
в ci.yml.