Merge pull request #292760 from PigeonF/dockertools-build-layered-compressor

dockerTools: Fix changing compression method for `buildLayeredImage`
This commit is contained in:
Robert Hensing 2024-04-08 09:24:18 +02:00 committed by GitHub
commit c740c98fc1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 27 additions and 3 deletions

View File

@ -178,6 +178,14 @@ in {
"docker load --input='${examples.bashUncompressed}'",
"docker rmi ${examples.bashUncompressed.imageName}",
)
docker.succeed(
"docker load --input='${examples.bashLayeredUncompressed}'",
"docker rmi ${examples.bashLayeredUncompressed.imageName}",
)
docker.succeed(
"docker load --input='${examples.bashLayeredZstdCompressed}'",
"docker rmi ${examples.bashLayeredZstdCompressed.imageName}",
)
with subtest(
"Check if the nix store is correctly initialized by listing "

View File

@ -517,7 +517,7 @@ rec {
buildLayeredImage = lib.makeOverridable ({ name, compressor ? "gz", ... }@args:
let
stream = streamLayeredImage args;
stream = streamLayeredImage (builtins.removeAttrs args ["compressor"]);
compress = compressorForImage compressor name;
in
runCommand "${baseNameOf name}.tar${compress.ext}"
@ -1287,7 +1287,7 @@ rec {
# Wrapper around streamNixShellImage to build an image from the result
buildNixShellImage = { drv, compressor ? "gz", ... }@args:
let
stream = streamNixShellImage args;
stream = streamNixShellImage (builtins.removeAttrs args ["compressor"]);
compress = compressorForImage compressor drv.name;
in
runCommand "${drv.name}-env.tar${compress.ext}"

View File

@ -509,7 +509,23 @@ rec {
contents = pkgs.bashInteractive;
};
# buildImage without explicit tag
# buildLayeredImage without compression
bashLayeredUncompressed = pkgs.dockerTools.buildLayeredImage {
name = "bash-layered-uncompressed";
tag = "latest";
compressor = "none";
contents = pkgs.bashInteractive;
};
# buildLayeredImage with zstd compression
bashLayeredZstdCompressed = pkgs.dockerTools.buildLayeredImage {
name = "bash-layered-zstd";
tag = "latest";
compressor = "zstd";
contents = pkgs.bashInteractive;
};
# streamLayeredImage without explicit tag
bashNoTagStreamLayered = pkgs.dockerTools.streamLayeredImage {
name = "bash-no-tag-stream-layered";
contents = pkgs.bashInteractive;