CI: Make tests work with Docker API version 1.42 (#576)

* Make tests work with API version 1.42.

* Make sure anonymous volume is separated from container a bit earlier.

* Another try.
This commit is contained in:
Felix Fontein 2023-02-04 22:16:25 +01:00 committed by GitHub
parent 421bae419d
commit 3a1bfc4be2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 58 additions and 9 deletions

View File

@ -2743,6 +2743,8 @@
when:
- kernel_memory_1 is not failed or 'kernel memory accounting disabled in this runc build' not in kernel_memory_1.msg
- "'Docker warning: Specifying a kernel memory limit is deprecated and will be removed in a future release.' not in (kernel_memory_1.warnings | default([]))"
# API version 1.42 seems to remove the kernel memory option completely
- "'KernelMemory' in kernel_memory_1.container.HostConfig or docker_api_version is version('1.42', '<')"
####################################################################
## kill_signal #####################################################

View File

@ -16,19 +16,28 @@
- block:
# Create objects to be pruned
- docker_container:
- name: Create container (without volume)
docker_container:
name: "{{ cname }}"
image: "{{ docker_test_image_hello_world }}"
state: present
register: container
- docker_network:
- name: Create network
docker_network:
name: "{{ nname }}"
state: present
register: network
- docker_volume:
- name: Create named volume
docker_volume:
name: "{{ vname }}"
state: present
register: volume
- name: Create anonymous volume
command: docker volume create
register: volume_anon
- name: List volumes
command: docker volume list
# Prune objects
- docker_prune:
@ -40,8 +49,11 @@
register: result
# Analyze result
- debug: var=result
- assert:
- name: Show results
debug:
var: result
- name: General checks
assert:
that:
# containers
- container.container.Id in result.containers
@ -51,19 +63,55 @@
# networks
- network.network.Name in result.networks
# volumes
- volume.volume.Name in result.volumes
- volume_anon.stdout in result.volumes
- "'volumes_space_reclaimed' in result"
# builder_cache
- "'builder_cache_space_reclaimed' in result"
- name: API-version specific volumes check (API version before 1.42)
assert:
that:
# For API version 1.41 and before, pruning always considers all volumes
- volume.volume.Name in result.volumes
when: docker_api_version is version('1.42', '<')
- name: API-version specific volumes check (API version 1.42+)
assert:
that:
# For API version 1.41 and before, pruning considers only anonymous volumes,
# so our named container is not removed
- volume.volume.Name not in result.volumes
when: docker_api_version is version('1.42', '>=')
# Test with filters
- docker_prune:
- name: Prune with filters
docker_prune:
images: yes
images_filters:
dangling: true
register: result
- debug: var=result
- name: Show results
debug:
var: result
- name: Prune volumes with all filter (API version 1.42+)
when: docker_api_version is version('1.42', '>=')
block:
- name: Prune with filters
docker_prune:
volumes: yes
volumes_filters:
all: true
register: result
- name: Show results
debug:
var: result
- name: Check results
assert:
that:
- volume.volume.Name in result.volumes
- "'volumes_space_reclaimed' in result"
when: docker_api_version is version('1.25', '>=')

View File

@ -69,7 +69,6 @@
that:
- 'output.results | type_debug == "list"'
- 'output.results[0].Name == "test_stack"'
- 'output.results[0].Orchestrator == "Swarm"'
- 'output.results[0].Services == "1"'
always: