From 260e9cc254a12fa6e082221bdf19e4bcf09edc27 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Sat, 12 Jul 2025 21:30:07 +0200 Subject: [PATCH] Try to get tests running. --- .../docker_compose_v2_build/tasks/main.yml | 7 ++ .../tasks/tests/build.yml | 65 ++++++++++++++++--- 2 files changed, 62 insertions(+), 10 deletions(-) diff --git a/tests/integration/targets/docker_compose_v2_build/tasks/main.yml b/tests/integration/targets/docker_compose_v2_build/tasks/main.yml index d2c8497b..89784660 100644 --- a/tests/integration/targets/docker_compose_v2_build/tasks/main.yml +++ b/tests/integration/targets/docker_compose_v2_build/tasks/main.yml @@ -13,6 +13,7 @@ set_fact: name_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}" cnames: [] + inames: [] dnetworks: [] - debug: @@ -41,6 +42,12 @@ with_items: "{{ cnames }}" diff: false + - name: "Make sure all images are removed" + docker_image_remove: + name: "{{ item }}" + with_items: "{{ inames }}" + diff: false + - name: "Make sure all networks are removed" docker_network: name: "{{ item }}" diff --git a/tests/integration/targets/docker_compose_v2_build/tasks/tests/build.yml b/tests/integration/targets/docker_compose_v2_build/tasks/tests/build.yml index b30ca1f3..e1367630 100644 --- a/tests/integration/targets/docker_compose_v2_build/tasks/tests/build.yml +++ b/tests/integration/targets/docker_compose_v2_build/tasks/tests/build.yml @@ -8,31 +8,32 @@ cname: "{{ name_prefix }}-cont" non_existing_image: does-not-exist:latest dockerfile_path: test-dockerfile - base_image: hello-world:latest + base_image: "{{ docker_test_image_hello_world }}" + image_name: "{{ name_prefix }}-image" project_src: "{{ remote_tmp_dir }}/{{ bname }}" test_service_non_existing: | - version: '3' services: {{ cname }}: image: {{ non_existing_image }} build: dockerfile: Dockerfile-does-not-exist test_service_simple: | - version: '3' services: {{ cname }}: - image: {{ docker_test_image_simple_1 }} + image: {{ image_name }} build: dockerfile: {{ dockerfile_path }} command: 10m stop_grace_period: 1s test_service_simple_dockerfile: | FROM {{ base_image }} + RUN [ "/hello" ] block: - name: Registering container name set_fact: - cnames: "{{ cnames + [bname ~ '-' ~ cname ~ '-1'] + [ base_image ]}}" + cnames: "{{ cnames + [bname ~ '-' ~ cname ~ '-1'] }}" + inames: "{{ inames + [ base_image, image_name ] }}" dnetworks: "{{ dnetworks + [bname ~ '_default'] }}" - name: Create project directory @@ -44,9 +45,13 @@ docker_image_remove: name: '{{ item }}' loop: - - '{{ base_image }}' - '{{ non_existing_image }}' - - '{{ docker_test_image_simple_1 }}' + - '{{ image_name }}' + + - name: Prune docker build cache + docker_prune: + builder_cache: true + builder_cache_all: true #################################################################### ## Image with missing dockerfile ################################### @@ -72,11 +77,13 @@ - assert: that: - - build_1_check is failed or build_1_check is changed - - build_1_check is changed or build_1_check.msg.startswith('Error when processing ') + - build_1_check is failed + - >- + build_1_check.msg | trim == "General error: failed to solve: failed to read dockerfile: open Dockerfile-does-not-exist: no such file or directory" - build_1_check.warnings | default([]) | select('regex', 'Cannot parse event from ') | length == 0 - build_1 is failed - - build_1.msg.startswith('Error when processing ') + - >- + build_1.msg | trim == "General error: failed to solve: failed to read dockerfile: open Dockerfile-does-not-exist: no such file or directory" - build_1.warnings | default([]) | select('regex', 'Cannot parse event from ') | length == 0 #################################################################### @@ -93,17 +100,48 @@ dest: '{{ project_src }}/{{ dockerfile_path }}' content: '{{ test_service_simple_dockerfile }}' + - docker_image_info: + name: "{{ image_name }}" + register: pre_image + - name: Build (check) docker_compose_v2_build: project_src: '{{ project_src }}' check_mode: true register: build_1_check + - docker_image_info: + name: "{{ image_name }}" + register: build_1_check_image + - name: Build docker_compose_v2_build: project_src: '{{ project_src }}' register: build_1 + - docker_image_info: + name: "{{ image_name }}" + register: build_1_image + + - name: Build (idempotent, check) + docker_compose_v2_build: + project_src: '{{ project_src }}' + check_mode: true + register: build_2_check + + - docker_image_info: + name: "{{ image_name }}" + register: build_2_check_image + + - name: Build (idempotent) + docker_compose_v2_build: + project_src: '{{ project_src }}' + register: build_2 + + - docker_image_info: + name: "{{ image_name }}" + register: build_2_image + - assert: that: - build_1_check is changed @@ -112,3 +150,10 @@ - build_1 is changed - (build_1.actions | selectattr('status', 'eq', 'Building') | first) is truthy - build_1.warnings | default([]) | select('regex', 'Cannot parse event from ') | length == 0 + + - build_2_check is not changed + - build_2_check.actions | selectattr('status', 'eq', 'Building') | length == 0 + - build_2_check.warnings | default([]) | select('regex', 'Cannot parse event from ') | length == 0 + - build_2 is not changed + - build_2.actions | selectattr('status', 'eq', 'Building') | length == 0 + - build_2.warnings | default([]) | select('regex', 'Cannot parse event from ') | length == 0