mirror of
https://github.com/ansible-collections/community.docker.git
synced 2026-04-12 12:35:53 +00:00
Add basic CI.
This commit is contained in:
parent
65e32d518d
commit
7bec26a169
6
tests/integration/targets/docker_context_info/aliases
Normal file
6
tests/integration/targets/docker_context_info/aliases
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Copyright (c) Ansible Project
|
||||||
|
# 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
|
||||||
|
|
||||||
|
azp/5
|
||||||
|
destructive
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
# Copyright (c) Ansible Project
|
||||||
|
# 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
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- setup_docker
|
||||||
|
- setup_docker_python_deps
|
||||||
40
tests/integration/targets/docker_context_info/tasks/main.yml
Normal file
40
tests/integration/targets/docker_context_info/tasks/main.yml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
# Copyright (c) Ansible Project
|
||||||
|
# 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
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
# WARNING: These are designed specifically for Ansible tests #
|
||||||
|
# and should not be used as examples of how to write Ansible roles #
|
||||||
|
####################################################################
|
||||||
|
|
||||||
|
# Create random name prefix (for containers, networks, ...)
|
||||||
|
- name: Create random container name prefix
|
||||||
|
set_fact:
|
||||||
|
cname_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||||
|
cnames: []
|
||||||
|
|
||||||
|
- debug:
|
||||||
|
msg: "Using container name prefix {{ cname_prefix }}"
|
||||||
|
|
||||||
|
# Run the tests
|
||||||
|
- block:
|
||||||
|
- include_tasks: run-test.yml
|
||||||
|
with_fileglob:
|
||||||
|
- "tests/*.yml"
|
||||||
|
loop_control:
|
||||||
|
loop_var: test_name
|
||||||
|
|
||||||
|
always:
|
||||||
|
- name: "Make sure all containers are removed"
|
||||||
|
docker_container:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: absent
|
||||||
|
force_kill: true
|
||||||
|
with_items: "{{ cnames }}"
|
||||||
|
diff: false
|
||||||
|
|
||||||
|
when: docker_api_version is version('1.25', '>=')
|
||||||
|
|
||||||
|
- fail: msg="Too old docker / docker-py version to run all docker_container tests!"
|
||||||
|
when: not(docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
# Copyright (c) Ansible Project
|
||||||
|
# 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
|
||||||
|
|
||||||
|
- name: "Loading tasks from {{ test_name }}"
|
||||||
|
include_tasks: "{{ test_name }}"
|
||||||
@ -0,0 +1,121 @@
|
|||||||
|
---
|
||||||
|
# Copyright (c) Ansible Project
|
||||||
|
# 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
|
||||||
|
|
||||||
|
- name: Registering container name
|
||||||
|
set_fact:
|
||||||
|
cname: "{{ cname_prefix ~ '-hi' }}"
|
||||||
|
- name: Registering container name
|
||||||
|
set_fact:
|
||||||
|
cnames: "{{ cnames + [cname] }}"
|
||||||
|
|
||||||
|
- name: Get current context
|
||||||
|
community.docker.docker_context_info:
|
||||||
|
only_current: true
|
||||||
|
register: docker_current_context
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- docker_current_context is not changed
|
||||||
|
# Some of the following tests will not be true on all machines, but they should be in CI:
|
||||||
|
- docker_current_context.current_context_name == 'default'
|
||||||
|
- docker_current_context.contexts | length == 1
|
||||||
|
- docker_current_context.contexts[0].name == 'default'
|
||||||
|
- docker_current_context.contexts[0].current == true
|
||||||
|
- docker_current_context.contexts[0].description == 'Current DOCKER_HOST based configuration'
|
||||||
|
- docker_current_context.contexts[0].meta_path is none
|
||||||
|
- docker_current_context.contexts[0].tls_path is none
|
||||||
|
- docker_current_context.contexts[0].config.docker_host == 'unix:///var/run/docker.sock'
|
||||||
|
- docker_current_context.contexts[0].config.tls == false
|
||||||
|
|
||||||
|
- name: Run community.docker modules with current context
|
||||||
|
module_defaults:
|
||||||
|
group/community.docker.docker: "{{ docker_current_context.contexts[0].config }}"
|
||||||
|
block:
|
||||||
|
- name: Create container
|
||||||
|
docker_container:
|
||||||
|
image: "{{ docker_test_image_alpine }}"
|
||||||
|
command: '/bin/sh -c "sleep 10m"'
|
||||||
|
name: "{{ cname }}"
|
||||||
|
state: present
|
||||||
|
register: create_1
|
||||||
|
|
||||||
|
- name: Create container (idempotent)
|
||||||
|
docker_container:
|
||||||
|
image: "{{ docker_test_image_alpine }}"
|
||||||
|
command: '/bin/sh -c "sleep 10m"'
|
||||||
|
name: "{{ cname }}"
|
||||||
|
state: present
|
||||||
|
register: create_2
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- create_1 is changed
|
||||||
|
- create_2 is not changed
|
||||||
|
|
||||||
|
- name: Inspect container with CLI tool
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: docker inspect {{ cname }}
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- (result.stdout | from_json) | length == 1
|
||||||
|
- (result.stdout | from_json)[0].State.Status == "created"
|
||||||
|
|
||||||
|
- name: Start container
|
||||||
|
docker_container:
|
||||||
|
name: "{{ cname }}"
|
||||||
|
state: started
|
||||||
|
register: start_1
|
||||||
|
|
||||||
|
- name: Start container (idempotent)
|
||||||
|
docker_container:
|
||||||
|
name: "{{ cname }}"
|
||||||
|
state: started
|
||||||
|
register: start_2
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- start_1 is changed
|
||||||
|
- start_2 is not changed
|
||||||
|
|
||||||
|
- name: Inspect container with CLI tool
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: docker inspect {{ cname }}
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- (result.stdout | from_json) | length == 1
|
||||||
|
- (result.stdout | from_json)[0].State.Status == "running"
|
||||||
|
|
||||||
|
- name: Remove container
|
||||||
|
docker_container:
|
||||||
|
name: "{{ cname }}"
|
||||||
|
state: absent
|
||||||
|
force_kill: true
|
||||||
|
register: remove_1
|
||||||
|
|
||||||
|
- name: Remove container (idempotent)
|
||||||
|
docker_container:
|
||||||
|
name: "{{ cname }}"
|
||||||
|
state: absent
|
||||||
|
force_kill: true
|
||||||
|
register: remove_2
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- remove_1 is changed
|
||||||
|
- remove_2 is not changed
|
||||||
|
|
||||||
|
- name: Inspect container with CLI tool
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: docker inspect {{ cname }}
|
||||||
|
register: result
|
||||||
|
failed_when: result.rc != 1
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- (result.stdout | from_json) | length == 0
|
||||||
Loading…
Reference in New Issue
Block a user