From 39e678e24e38f1f374eaf5463b424ebdf75df9af Mon Sep 17 00:00:00 2001 From: Mathias Schreck Date: Fri, 29 Jun 2018 19:20:55 +0200 Subject: [PATCH] dockerTools.buildImage: add option to use nix output hash as tag --- doc/functions.xml | 2 +- nixos/doc/manual/release-notes/rl-1809.xml | 6 ++++++ pkgs/build-support/docker/default.nix | 13 ++++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/doc/functions.xml b/doc/functions.xml index 746ef7131f86..c23f6aa25967 100644 --- a/doc/functions.xml +++ b/doc/functions.xml @@ -521,7 +521,7 @@ merge:"diff3" tag specifies the tag of the resulting image. By - default it's latest. + default it's null, which indicates that the nix output hash will be used as tag. diff --git a/nixos/doc/manual/release-notes/rl-1809.xml b/nixos/doc/manual/release-notes/rl-1809.xml index 51e77d24a74e..13b244e12f8c 100644 --- a/nixos/doc/manual/release-notes/rl-1809.xml +++ b/nixos/doc/manual/release-notes/rl-1809.xml @@ -127,6 +127,12 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull' Make sure the key file is accessible to the daemon. + + + dockerTools.buildImage now uses null as default value for tag, + which indicates that the nix output hash will be used as tag. + + diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index b01f0b722724..ff45cf81d7e5 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -420,8 +420,8 @@ rec { buildImage = args@{ # Image name. name, - # Image tag. - tag ? "latest", + # Image tag, when null then the nix output hash will be used. + tag ? null, # Parent image, to append to. fromImage ? null, # Name of the parent image; will be read from the image otherwise. @@ -471,12 +471,19 @@ rec { buildInputs = [ jshon pigz coreutils findutils jq ]; # Image name and tag must be lowercase imageName = lib.toLower name; - imageTag = lib.toLower tag; + imageTag = if tag == null then "" else lib.toLower tag; inherit fromImage baseJson; layerClosure = writeReferencesToFile layer; passthru.buildArgs = args; passthru.layer = layer; } '' + ${lib.optionalString (tag == null) '' + outName="$(basename "$out")" + outHash=$(echo "$outName" | cut -d - -f 1) + + imageTag=$outHash + ''} + # Print tar contents: # 1: Interpreted as relative to the root directory # 2: With no trailing slashes on directories