Skip to content

Commit

Permalink
dockerTools.buildImage: add option to use nix output hash as tag
Browse files Browse the repository at this point in the history
  • Loading branch information
lo1tuma authored and Profpatsch committed Jul 6, 2018
1 parent 588dbd7 commit 39e678e
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
2 changes: 1 addition & 1 deletion doc/functions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@ merge:"diff3"
<callout arearefs='ex-dockerTools-buildImage-2'>
<para>
<varname>tag</varname> specifies the tag of the resulting image. By
default it's <literal>latest</literal>.
default it's <literal>null</literal>, which indicates that the nix output hash will be used as tag.
</para>
</callout>
<callout arearefs='ex-dockerTools-buildImage-3'>
Expand Down
6 changes: 6 additions & 0 deletions nixos/doc/manual/release-notes/rl-1809.xml
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,12 @@ $ nix-instantiate -E '(import &lt;nixpkgsunstable&gt; {}).gitFull'
Make sure the key file is accessible to the daemon.
</para>
</listitem>
<listitem>
<para>
<varname>dockerTools.buildImage</varname> now uses <literal>null</literal> as default value for <varname>tag</varname>,
which indicates that the nix output hash will be used as tag.
</para>
</listitem>
</itemizedlist>
</section>

Expand Down
13 changes: 10 additions & 3 deletions pkgs/build-support/docker/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 39e678e

Please sign in to comment.