From d8297df7d019a2850b6f9906e3e6b38f57c646e7 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Tue, 16 Aug 2022 22:37:51 +0200 Subject: [PATCH] Fix docker_image's build.args (#456) * Add tests for build.args. * Fix bug: store build args in correct dict * Add changelog fragment. * Update copyright notice. --- .../fragments/456-docker_image-build-args.yml | 2 ++ plugins/modules/docker_image.py | 2 +- .../integration/targets/docker_image/tasks/test.yml | 1 + .../targets/docker_image/tasks/tests/options.yml | 4 ++++ .../targets/docker_image/templates/ArgsDockerfile | 13 +++++++++++++ 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/456-docker_image-build-args.yml create mode 100644 tests/integration/targets/docker_image/templates/ArgsDockerfile diff --git a/changelogs/fragments/456-docker_image-build-args.yml b/changelogs/fragments/456-docker_image-build-args.yml new file mode 100644 index 00000000..3380b09a --- /dev/null +++ b/changelogs/fragments/456-docker_image-build-args.yml @@ -0,0 +1,2 @@ +bugfixes: + - "docker_image - fix build argument handling (https://github.com/ansible-collections/community.docker/issues/455, https://github.com/ansible-collections/community.docker/pull/456)." diff --git a/plugins/modules/docker_image.py b/plugins/modules/docker_image.py index fd048ecc..6057e1bd 100644 --- a/plugins/modules/docker_image.py +++ b/plugins/modules/docker_image.py @@ -696,7 +696,7 @@ class ImageManager(DockerBaseClass): buildargs = {} if self.buildargs: for key, value in self.buildargs.items(): - self.buildargs[key] = to_native(value) + buildargs[key] = to_native(value) container_limits = self.container_limits or {} for key in container_limits.keys(): diff --git a/tests/integration/targets/docker_image/tasks/test.yml b/tests/integration/targets/docker_image/tasks/test.yml index 9740e255..5941bc08 100644 --- a/tests/integration/targets/docker_image/tasks/test.yml +++ b/tests/integration/targets/docker_image/tasks/test.yml @@ -24,6 +24,7 @@ src: '{{ item }}' dest: '{{ remote_tmp_dir }}/files/{{ item }}' loop: + - ArgsDockerfile - Dockerfile - EtcHostsDockerfile - MyDockerfile diff --git a/tests/integration/targets/docker_image/tasks/tests/options.yml b/tests/integration/targets/docker_image/tasks/tests/options.yml index b8eb823b..cf89fb27 100644 --- a/tests/integration/targets/docker_image/tasks/tests/options.yml +++ b/tests/integration/targets/docker_image/tasks/tests/options.yml @@ -27,7 +27,9 @@ name: "{{ iname }}" build: path: "{{ remote_tmp_dir }}/files" + dockerfile: "ArgsDockerfile" args: + IMAGE: "{{ docker_test_image_busybox }}" TEST1: val1 TEST2: val2 TEST3: "True" @@ -41,7 +43,9 @@ name: "{{ iname }}" build: path: "{{ remote_tmp_dir }}/files" + dockerfile: "ArgsDockerfile" args: + IMAGE: "{{ docker_test_image_busybox }}" TEST1: val1 TEST2: val2 TEST3: "True" diff --git a/tests/integration/targets/docker_image/templates/ArgsDockerfile b/tests/integration/targets/docker_image/templates/ArgsDockerfile new file mode 100644 index 00000000..dedd88a8 --- /dev/null +++ b/tests/integration/targets/docker_image/templates/ArgsDockerfile @@ -0,0 +1,13 @@ +# Copyright (c) 2022, Felix Fontein +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +ARG IMAGE +ARG TEST1 +ARG TEST2 +ARG TEST3 + +FROM ${IMAGE} +ENV foo /bar +WORKDIR ${foo} +RUN echo "${TEST1} - ${TEST2} - ${TEST3}"