Use FQCNs. (#1180)

This commit is contained in:
Felix Fontein
2025-10-25 10:12:21 +02:00
committed by GitHub
parent be000755fc
commit b24bce77b6
196 changed files with 3289 additions and 3289 deletions
@@ -9,5 +9,5 @@
####################################################################
- when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6']
include_tasks:
ansible.builtin.include_tasks:
file: test.yml
@@ -4,4 +4,4 @@
# SPDX-License-Identifier: GPL-3.0-or-later
- name: "Loading tasks from {{ test_name }}"
include_tasks: "{{ test_name }}"
ansible.builtin.include_tasks: "{{ test_name }}"
@@ -4,23 +4,23 @@
# SPDX-License-Identifier: GPL-3.0-or-later
- name: Create random name prefix
set_fact:
ansible.builtin.set_fact:
name_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
- name: Create image and container list
set_fact:
ansible.builtin.set_fact:
inames: []
cnames: []
- debug:
- ansible.builtin.debug:
msg: "Using name prefix {{ name_prefix }}"
- name: Create files directory
file:
ansible.builtin.file:
path: '{{ remote_tmp_dir }}/files'
state: directory
- name: Template files
template:
ansible.builtin.template:
src: '{{ item }}'
dest: '{{ remote_tmp_dir }}/files/{{ item }}'
loop:
@@ -31,7 +31,7 @@
- StagedDockerfile
- block:
- include_tasks: run-test.yml
- ansible.builtin.include_tasks: run-test.yml
with_fileglob:
- "tests/*.yml"
loop_control:
@@ -39,12 +39,12 @@
always:
- name: "Make sure all images are removed"
docker_image:
community.docker.docker_image:
name: "{{ item }}"
state: absent
with_items: "{{ inames }}"
- name: "Make sure all containers are removed"
docker_container:
community.docker.docker_container:
name: "{{ item }}"
state: absent
force_kill: true
@@ -52,5 +52,5 @@
when: docker_api_version is version('1.25', '>=')
- fail: msg="Too old docker / docker-py version to run docker_image tests!"
- ansible.builtin.fail: msg="Too old docker / docker-py version to run docker_image tests!"
when: not(docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
@@ -8,24 +8,24 @@
####################################################################
- name: Make sure image is not there
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
state: absent
force_absent: true
register: absent_1
- name: Make sure image is not there (idempotency)
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
state: absent
register: absent_2
- assert:
- ansible.builtin.assert:
that:
- absent_2 is not changed
- name: Make sure image is there
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
state: present
source: pull
@@ -34,7 +34,7 @@
register: present_1
- name: Make sure image is there (idempotent)
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
state: present
source: pull
@@ -42,32 +42,32 @@
platform: amd64
register: present_2
- assert:
- ansible.builtin.assert:
that:
- present_1 is changed
- present_2 is not changed
- name: Make sure tag is not there
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world_base }}:alias"
state: absent
- name: Tag image with alias
docker_image:
community.docker.docker_image:
source: local
name: "{{ docker_test_image_hello_world }}"
repository: "{{ docker_test_image_hello_world_base }}:alias"
register: tag_1
- name: Tag image with alias (idempotent)
docker_image:
community.docker.docker_image:
source: local
name: "{{ docker_test_image_hello_world }}"
repository: "{{ docker_test_image_hello_world_base }}:alias"
register: tag_2
- name: Tag image with alias (force, still idempotent)
docker_image:
community.docker.docker_image:
source: local
name: "{{ docker_test_image_hello_world }}"
repository: "{{ docker_test_image_hello_world_base }}:alias"
@@ -75,13 +75,13 @@
register: tag_3
- name: Tag image with ID instead of name
docker_image:
community.docker.docker_image:
source: local
name: "{{ present_1.image.Id }}"
repository: "{{ docker_test_image_hello_world_base }}:alias"
register: tag_4
- assert:
- ansible.builtin.assert:
that:
- tag_1 is changed
- tag_2 is not changed
@@ -89,12 +89,12 @@
- tag_4 is not changed
- name: Cleanup alias tag
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world_base }}:alias"
state: absent
- name: Tag image with ID instead of name (use ID for repository, must fail)
docker_image:
community.docker.docker_image:
source: local
name: "{{ docker_test_image_hello_world }}"
repository: "{{ present_1.image.Id }}"
@@ -102,7 +102,7 @@
ignore_errors: true
- name: Push image with ID (must fail)
docker_image:
community.docker.docker_image:
source: local
name: "{{ present_1.image.Id }}"
push: true
@@ -110,7 +110,7 @@
ignore_errors: true
- name: Pull image ID (must fail)
docker_image:
community.docker.docker_image:
source: pull
name: "{{ present_1.image.Id }}"
force_source: true
@@ -118,7 +118,7 @@
ignore_errors: true
- name: Build image ID (must fail)
docker_image:
community.docker.docker_image:
source: build
name: "{{ present_1.image.Id }}"
build:
@@ -127,7 +127,7 @@
register: fail_4
ignore_errors: true
- assert:
- ansible.builtin.assert:
that:
- fail_1 is failed
- "'`repository` must not be an image ID' in fail_1.msg"
@@ -4,16 +4,16 @@
# SPDX-License-Identifier: GPL-3.0-or-later
- name: Registering image name
set_fact:
ansible.builtin.set_fact:
iname: "{{ name_prefix ~ '-options' }}"
- name: Determining pushed image names
set_fact:
ansible.builtin.set_fact:
hello_world_image_base: "{{ registry_address | default('localhost') }}/test/hello-world"
test_image_base: "{{ registry_address | default('localhost') }}/test/{{ iname }}"
- name: Registering image name
set_fact:
ansible.builtin.set_fact:
inames: "{{ inames + [iname, test_image_base ~ ':latest', test_image_base ~ ':other', hello_world_image_base ~ ':latest', hello_world_image_base ~ ':newtag', hello_world_image_base ~ ':newtag2'] }}"
####################################################################
@@ -24,18 +24,18 @@
when: registry_address is defined
block:
- name: Make sure image is not there
docker_image:
community.docker.docker_image:
name: "{{ hello_world_image_base }}:latest"
state: absent
force_absent: true
- name: Make sure we have {{ docker_test_image_hello_world }}
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
source: pull
- name: Push image to test registry
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
repository: "{{ hello_world_image_base }}:latest"
push: true
@@ -43,7 +43,7 @@
register: push_1
- name: Push image to test registry (idempotent)
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
repository: "{{ hello_world_image_base }}:latest"
push: true
@@ -51,7 +51,7 @@
register: push_2
- name: Push image to test registry (force, still idempotent)
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
repository: "{{ hello_world_image_base }}:latest"
push: true
@@ -59,48 +59,48 @@
force_tag: true
register: push_3
- assert:
- ansible.builtin.assert:
that:
- push_1 is changed
- push_2 is not changed
- push_3 is not changed
- name: Get facts of local image
docker_image_info:
community.docker.docker_image_info:
name: "{{ hello_world_image_base }}:latest"
register: facts_1
- name: Make sure image is not there
docker_image:
community.docker.docker_image:
name: "{{ hello_world_image_base }}:latest"
state: absent
force_absent: true
- name: Get facts of local image (absent)
docker_image_info:
community.docker.docker_image_info:
name: "{{ hello_world_image_base }}:latest"
register: facts_2
- name: Pull image from test registry
docker_image:
community.docker.docker_image:
name: "{{ hello_world_image_base }}:latest"
state: present
source: pull
register: pull_1
- name: Pull image from test registry (idempotency)
docker_image:
community.docker.docker_image:
name: "{{ hello_world_image_base }}:latest"
state: present
source: pull
register: pull_2
- name: Get facts of local image (present)
docker_image_info:
community.docker.docker_image_info:
name: "{{ hello_world_image_base }}:latest"
register: facts_3
- assert:
- ansible.builtin.assert:
that:
- pull_1 is changed
- pull_2 is not changed
@@ -109,7 +109,7 @@
- facts_3.images | length == 1
- name: Pull image from test registry (with digest)
docker_image:
community.docker.docker_image:
name: "{{ hello_world_image_base }}@{{ facts_3.images[0].RepoDigests[0] | regex_replace('.*@', '') }}"
state: present
source: pull
@@ -117,19 +117,19 @@
register: pull_digest
- name: Make sure that changed is still false
assert:
ansible.builtin.assert:
that:
- pull_digest is not changed
- name: Tag different image with new tag
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_alpine_different }}"
repository: "{{ hello_world_image_base }}:newtag"
push: false
source: pull
- name: Push different image with new tag
docker_image:
community.docker.docker_image:
name: "{{ hello_world_image_base }}"
repository: "{{ hello_world_image_base }}"
tag: newtag
@@ -138,7 +138,7 @@
register: push_1_different
- name: Push different image with new tag (idempotent)
docker_image:
community.docker.docker_image:
name: "{{ hello_world_image_base }}"
repository: "{{ hello_world_image_base }}"
tag: newtag
@@ -146,20 +146,20 @@
source: local
register: push_2_different
- assert:
- ansible.builtin.assert:
that:
- push_1_different is changed
- push_2_different is not changed
- name: Tag same image with new tag
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_alpine_different }}"
repository: "{{ hello_world_image_base }}:newtag2"
push: false
source: pull
- name: Push same image with new tag
docker_image:
community.docker.docker_image:
name: "{{ hello_world_image_base }}"
repository: "{{ hello_world_image_base }}"
tag: newtag2
@@ -168,7 +168,7 @@
register: push_1_same
- name: Push same image with new tag (idempotent)
docker_image:
community.docker.docker_image:
name: "{{ hello_world_image_base }}"
repository: "{{ hello_world_image_base }}"
tag: newtag2
@@ -176,7 +176,7 @@
source: local
register: push_2_same
- assert:
- ansible.builtin.assert:
that:
# NOTE: This should be:
# - push_1_same is changed
@@ -202,13 +202,13 @@
####################################################################
- name: Make sure image is not there
docker_image:
community.docker.docker_image:
name: "{{ test_image_base }}:latest"
state: absent
force_absent: true
- name: repository
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -218,28 +218,28 @@
register: repository_1
- name: repository (idempotent)
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
repository: "{{ test_image_base }}"
source: local
register: repository_2
- name: repository, tag with ID
docker_image:
community.docker.docker_image:
name: "{{ repository_1.image.Id }}"
repository: "{{ test_image_base }}:other"
source: local
register: repository_3
- name: repository, tag with ID (idempotent)
docker_image:
community.docker.docker_image:
name: "{{ repository_1.image.Id }}"
repository: "{{ test_image_base }}:other"
source: local
force_tag: true
register: repository_4
- assert:
- ansible.builtin.assert:
that:
- repository_1 is changed
- repository_2 is not changed
@@ -247,16 +247,16 @@
- repository_4 is not changed
- name: Get facts of image
docker_image_info:
community.docker.docker_image_info:
name: "{{ test_image_base }}:latest"
register: facts_1
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ test_image_base }}:latest"
state: absent
force_absent: true
- assert:
- ansible.builtin.assert:
that:
- facts_1.images | length == 1
@@ -4,13 +4,13 @@
# SPDX-License-Identifier: GPL-3.0-or-later
- name: Registering image name
set_fact:
ansible.builtin.set_fact:
iname: "{{ name_prefix ~ '-options' }}"
iname_1: "{{ name_prefix ~ '-options-1' }}"
hello_world_alt: "{{ name_prefix }}-hello-world-alt:v1.2.3-foo"
- name: Registering image name
set_fact:
ansible.builtin.set_fact:
inames: "{{ inames + [iname, iname_1, hello_world_alt] }}"
####################################################################
@@ -18,13 +18,13 @@
####################################################################
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- name: buildargs
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -40,7 +40,7 @@
ignore_errors: true
- name: buildargs (idempotency)
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -56,12 +56,12 @@
ignore_errors: true
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- assert:
- ansible.builtin.assert:
that:
- buildargs_1 is changed
- buildargs_2 is not failed and buildargs_2 is not changed
@@ -71,7 +71,7 @@
####################################################################
- name: container_limits (Failed due to min memory limit)
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -83,7 +83,7 @@
register: container_limits_1
- name: container_limits
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -95,12 +95,12 @@
register: container_limits_2
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- assert:
- ansible.builtin.assert:
that:
# It *sometimes* happens that the first task does not fail.
# For now, we work around this by
@@ -116,7 +116,7 @@
####################################################################
- name: dockerfile
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -126,12 +126,12 @@
register: dockerfile_1
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- assert:
- ansible.builtin.assert:
that:
- dockerfile_1 is changed
- "('FROM ' ~ docker_test_image_alpine) in dockerfile_1.stdout"
@@ -142,13 +142,13 @@
####################################################################
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- name: build.platform
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -159,7 +159,7 @@
ignore_errors: true
- name: build.platform (idempotency)
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -170,12 +170,12 @@
ignore_errors: true
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- assert:
- ansible.builtin.assert:
that:
- platform_1 is changed
- platform_2 is not failed and platform_2 is not changed
@@ -185,7 +185,7 @@
####################################################################
- name: Build an image
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -193,7 +193,7 @@
source: build
- name: force (changed)
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -204,7 +204,7 @@
register: force_1
- name: force (unchanged)
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -215,12 +215,12 @@
register: force_2
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- assert:
- ansible.builtin.assert:
that:
- force_1 is changed
- force_2 is not changed
@@ -230,103 +230,103 @@
####################################################################
- name: Archive image
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
archive_path: "{{ remote_tmp_dir }}/image.tar"
source: pull
register: archive_image
- assert:
- ansible.builtin.assert:
that:
- archive_image is changed
- name: Copy archive because we will mutate it but other tests need the original
copy:
ansible.builtin.copy:
remote_src: true
src: "{{ remote_tmp_dir }}/image.tar"
dest: "{{ remote_tmp_dir }}/image_mutated.tar"
- name: Archive image again (idempotent)
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
archive_path: "{{ remote_tmp_dir }}/image_mutated.tar"
source: local
register: archive_image_2
- assert:
- ansible.builtin.assert:
that:
- archive_image_2 is not changed
- name: Archive image 3rd time, should overwrite due to different id
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_alpine_different }}"
archive_path: "{{ remote_tmp_dir }}/image_mutated.tar"
source: pull
register: archive_image_3
- assert:
- ansible.builtin.assert:
that:
- archive_image_3 is changed
- name: Reset archive
copy:
ansible.builtin.copy:
remote_src: true
src: "{{ remote_tmp_dir }}/image.tar"
dest: "{{ remote_tmp_dir }}/image_mutated.tar"
- name: Tag image with different name
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
repository: "{{ hello_world_alt }}"
source: local
- name: Archive image 4th time, should overwrite due to different name even when ID is same
docker_image:
community.docker.docker_image:
name: "{{ hello_world_alt }}"
# Tagged as docker_test_image_hello_world but has same hash/id (before this task overwrites it)
archive_path: "{{ remote_tmp_dir }}/image_mutated.tar"
source: local
register: archive_image_4
- assert:
- ansible.builtin.assert:
that:
- archive_image_4 is changed
# This is the test that needs the original, non-mutated archive
- name: Archive image by ID
docker_image:
community.docker.docker_image:
name: "{{ archive_image.image.Id }}"
archive_path: "{{ remote_tmp_dir }}/image_id.tar"
source: local
register: archive_image_id
- name: Create invalid archive
copy:
ansible.builtin.copy:
dest: "{{ remote_tmp_dir }}/image-invalid.tar"
content: "this is not a valid image"
- name: remove image
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
state: absent
force_absent: true
- name: load image (changed)
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
load_path: "{{ remote_tmp_dir }}/image.tar"
source: load
register: load_image
- name: load image (idempotency)
docker_image:
community.docker.docker_image:
name: "{{ docker_test_image_hello_world }}"
load_path: "{{ remote_tmp_dir }}/image.tar"
source: load
register: load_image_1
- name: load image (wrong name)
docker_image:
community.docker.docker_image:
name: foo:bar
load_path: "{{ remote_tmp_dir }}/image.tar"
source: load
@@ -334,7 +334,7 @@
ignore_errors: true
- name: load image (invalid image)
docker_image:
community.docker.docker_image:
name: foo:bar
load_path: "{{ remote_tmp_dir }}/image-invalid.tar"
source: load
@@ -342,13 +342,13 @@
ignore_errors: true
- name: load image (ID, idempotency)
docker_image:
community.docker.docker_image:
name: "{{ archive_image.image.Id }}"
load_path: "{{ remote_tmp_dir }}/image_id.tar"
source: load
register: load_image_4
- assert:
- ansible.builtin.assert:
that:
- load_image is changed
- archive_image['image']['Id'] == load_image['image']['Id']
@@ -365,7 +365,7 @@
####################################################################
- name: Build image
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -374,7 +374,7 @@
register: path_1
- name: Build image (idempotency)
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -383,12 +383,12 @@
register: path_2
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- assert:
- ansible.builtin.assert:
that:
- path_1 is changed
- path_2 is not changed
@@ -398,7 +398,7 @@
####################################################################
- name: Build multi-stage image
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -409,12 +409,12 @@
register: dockerfile_2
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- assert:
- ansible.builtin.assert:
that:
- dockerfile_2 is changed
- dockerfile_2.image.Config.WorkingDir == '/first'
@@ -424,7 +424,7 @@
####################################################################
- name: Build image with custom etc_hosts
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -436,12 +436,12 @@
register: path_1
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- assert:
- ansible.builtin.assert:
that:
- path_1 is changed
@@ -450,7 +450,7 @@
####################################################################
- name: Build image with custom shm_size
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -461,12 +461,12 @@
register: path_1
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- assert:
- ansible.builtin.assert:
that:
- path_1 is changed
@@ -475,7 +475,7 @@
####################################################################
- name: Build image with labels
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
build:
path: "{{ remote_tmp_dir }}/files"
@@ -488,16 +488,16 @@
register: labels_1
- name: cleanup
docker_image:
community.docker.docker_image:
name: "{{ iname }}"
state: absent
force_absent: true
- name: Show image information
debug:
ansible.builtin.debug:
var: labels_1.image
- assert:
- ansible.builtin.assert:
that:
- labels_1 is changed
- labels_1.image.Config.Labels.FOO == 'BAR'