diff --git a/test/integration/targets/docker_image/files/Dockerfile b/test/integration/targets/docker_image/files/Dockerfile new file mode 100644 index 00000000000..c2951375fa1 --- /dev/null +++ b/test/integration/targets/docker_image/files/Dockerfile @@ -0,0 +1,3 @@ +FROM busybox +ENV foo /bar +WORKDIR ${foo} diff --git a/test/integration/targets/docker_image/files/MyDockerfile b/test/integration/targets/docker_image/files/MyDockerfile new file mode 100644 index 00000000000..605e8e0f8af --- /dev/null +++ b/test/integration/targets/docker_image/files/MyDockerfile @@ -0,0 +1,5 @@ +FROM alpine:3.7 +ENV INSTALL_PATH /newdata +RUN mkdir -p $INSTALL_PATH + +WORKDIR $INSTALL_PATH diff --git a/test/integration/targets/docker_image/tasks/tests/options.yml b/test/integration/targets/docker_image/tasks/tests/options.yml new file mode 100644 index 00000000000..d5e992c9495 --- /dev/null +++ b/test/integration/targets/docker_image/tasks/tests/options.yml @@ -0,0 +1,240 @@ +--- +- name: Registering image name + set_fact: + iname: "{{ name_prefix ~ '-options' }}" + iname_1: "{{ name_prefix ~ '-options-1' }}" + +- name: Registering image name + set_fact: + inames: "{{ inames }} + [iname, iname_1]" + +#################################################################### +## buildargs ####################################################### +#################################################################### + +- name: buildargs + docker_image: + path: "{{ role_path }}/files" + name: "{{ iname }}" + buildargs: + TEST1: val1 + TEST2: val2 + TEST3: "True" + register: buildargs_1 + +- name: buildargs (idempotency) + docker_image: + path: "{{ role_path }}/files" + name: "{{ iname }}" + buildargs: + TEST1: val1 + TEST2: val2 + TEST3: "True" + register: buildargs_2 + +- name: cleanup + docker_image: + name: "{{ iname }}" + state: absent + +- assert: + that: + - buildargs_1 is changed + - buildargs_2 is not changed + when: docker_py_version is version('1.6.0', '>=') + +- assert: + that: + - buildargs_1 is failed + - buildargs_2 is failed + when: docker_py_version is version('1.6.0', '<') + +#################################################################### +## container_limits ################################################ +#################################################################### + +- name: container_limits (Failed due to min memory limit) + docker_image: + path: "{{ role_path }}/files" + name: "{{ iname }}" + container_limits: + memory: 4000 + ignore_errors: yes + register: container_limits_1 + +- name: container_limits + docker_image: + path: "{{ role_path }}/files" + name: "{{ iname }}" + container_limits: + memory: 5000000 + memswap: 7000000 + register: container_limits_2 + +- name: cleanup + docker_image: + name: "{{ iname }}" + state: absent + +- assert: + that: + - "('Minimum memory limit allowed is 4MB') in container_limits_1.msg" + - container_limits_2 is changed + +#################################################################### +## dockerfile ###################################################### +#################################################################### + +- name: dockerfile + docker_image: + path: "{{ role_path }}/files" + name: "{{ iname }}" + dockerfile: "MyDockerfile" + register: dockerfile_1 + +- name: cleanup + docker_image: + name: "{{ iname }}" + state: absent + +- assert: + that: + - dockerfile_1 is changed + - dockerfile_1['image']['Config']['WorkingDir'] == '/newdata' + +#################################################################### +## repository ###################################################### +#################################################################### + +- name: Make sure image is not there + docker_image: + name: "{{ registry_address }}/test/{{ iname }}:latest" + state: absent + +- name: repository + docker_image: + name: "{{ iname }}" + path: "{{ role_path }}/files" + repository: "{{ registry_address }}/test/{{ iname }}" + register: repository_1 + +- name: repository (idempotent) + docker_image: + name: "{{ iname }}" + path: "{{ role_path }}/files" + repository: "{{ registry_address }}/test/{{ iname }}" + register: repository_2 + +- assert: + that: + - repository_1 is changed + - repository_2 is not changed + +- name: Get facts of image + docker_image_facts: + name: "{{ registry_address }}/test/{{ iname }}:latest" + register: facts_1 + +- name: cleanup + docker_image: + name: "{{ registry_address }}/test/{{ iname }}:latest" + state: absent + force: yes + +- assert: + that: + - facts_1.images | length == 1 + +#################################################################### +## force ########################################################### +#################################################################### + +- name: Build an image + docker_image: + path: "{{ role_path }}/files" + name: "{{ iname }}" + +- name: force (changed) + docker_image: + path: "{{ role_path }}/files" + name: "{{ iname }}" + dockerfile: "MyDockerfile" + force: yes + register: force_1 + +- name: force (unchanged) + docker_image: + path: "{{ role_path }}/files" + name: "{{ iname }}" + dockerfile: "MyDockerfile" + force: yes + register: force_2 + +- name: cleanup + docker_image: + name: "{{ iname }}" + state: absent + +- assert: + that: + - force_1 is changed + - force_2 is not changed + +#################################################################### +## load path ####################################################### +#################################################################### + +- name: Archive image + docker_image: + name: "hello-world:latest" + archive_path: image.tar + register: archive_image + +- name: remove image + docker_image: + name: "hello-world:latest" + state: absent + +- name: load image (changed) + docker_image: + name: "hello-world:latest" + load_path: image.tar + register: load_image + +- name: load image (idempotency) + docker_image: + name: "hello-world:latest" + load_path: image.tar + register: load_image_1 + +- assert: + that: + - load_image is changed + - load_image_1 is not changed + - archive_image['image']['Id'] == load_image['image']['Id'] + +#################################################################### +## path ############################################################ +#################################################################### + +- name: Build image + docker_image: + name: "{{ iname }}" + path: "{{ role_path }}/files" + register: path_1 + +- name: Build image(idempotency) + docker_image: + name: "{{ iname }}" + path: "{{ role_path }}/files" + register: path_2 + +- name: cleanup + docker_image: + name: "{{ iname }}" + state: absent + +- assert: + that: + - path_1 is changed + - path_2 is not changed