mirror of
https://github.com/ansible-collections/community.docker.git
synced 2026-03-18 20:57:02 +00:00
* Move licenses to LICENSES/, use SPDX-License-Identifier, mention all licenses in galaxy.yml. * ignore.txt lines cannot be empty or contain only a comment. * Cleanup. * This particular __init__.py seems to be crucial. * Try extra newline. * Markdown comments are a real mess. I hope this won't break Galaxy... * More licenses. * Add sanity test. * Skip some files, lint. * Make sure there is a copyright line everywhere. * Also check for copyright line in sanity tests. * Remove colon after 'Copyright'. * Normalize lint script. * Avoid colon after 'Copyright' in lint script. * Improve license checker. * Update README.md Co-authored-by: Maxwell G <9920591+gotmax23@users.noreply.github.com> * Remove superfluous space. * Referencing target instead of symlink Co-authored-by: Maxwell G <9920591+gotmax23@users.noreply.github.com>
244 lines
8.0 KiB
YAML
244 lines
8.0 KiB
YAML
---
|
|
# 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:
|
|
pname: "{{ cname_prefix }}"
|
|
cname_1: "{{ cname_prefix ~ '1' }}"
|
|
cname_2: "{{ cname_prefix ~ '2' }}"
|
|
|
|
####################################################################
|
|
## Profiles ########################################################
|
|
####################################################################
|
|
|
|
- block:
|
|
- name: Define service
|
|
set_fact:
|
|
test_service: |
|
|
version: '3'
|
|
services:
|
|
{{ cname_1 }}:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
profiles:
|
|
- profile_1
|
|
- profile_all
|
|
stop_grace_period: 1s
|
|
{{ cname_2 }}:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
profiles:
|
|
- profile_2
|
|
- profile_all
|
|
stop_grace_period: 1s
|
|
test_cases:
|
|
- test_name: no services enabled
|
|
- test_name: enable 1
|
|
profiles_value:
|
|
- profile_1
|
|
- test_name: stop all services
|
|
profiles_value:
|
|
- profile_1
|
|
stopped_value: true
|
|
- test_name: enable 2
|
|
profiles_value:
|
|
- profile_2
|
|
- test_name: stop all services
|
|
profiles_value:
|
|
- profile_2
|
|
stopped_value: true
|
|
- test_name: enable both
|
|
profiles_value:
|
|
- profile_1
|
|
- profile_2
|
|
- test_name: stop all services
|
|
profiles_value:
|
|
- profile_1
|
|
- profile_2
|
|
stopped_value: true
|
|
- test_name: enable all
|
|
profiles_value:
|
|
- profile_all
|
|
|
|
- name: Profiles ({{ test_case.test_name }})
|
|
docker_compose:
|
|
project_name: "{{ pname }}"
|
|
definition: "{{ test_service | from_yaml }}"
|
|
profiles: "{{ test_case.profiles_value | default(omit) }}"
|
|
stopped: "{{ test_case.stopped_value | default(omit) }}"
|
|
state: present
|
|
register: profiles_outputs
|
|
loop: "{{ test_cases }}"
|
|
loop_control:
|
|
loop_var: test_case
|
|
|
|
- name: Cleanup
|
|
docker_compose:
|
|
project_name: "{{ pname }}"
|
|
state: absent
|
|
definition: "{{ test_service | from_yaml }}"
|
|
|
|
- assert:
|
|
that:
|
|
- profiles_outputs.results[0] is not changed
|
|
- profiles_outputs.results[1].services[cname_1][cname_1_name].state.running
|
|
- profiles_outputs.results[1].services[cname_2] == {}
|
|
- not profiles_outputs.results[2].services[cname_1][cname_1_name].state.running
|
|
- profiles_outputs.results[2].services[cname_2] == {}
|
|
- not profiles_outputs.results[3].services[cname_1][cname_1_name].state.running
|
|
- profiles_outputs.results[3].services[cname_2][cname_2_name].state.running
|
|
- not profiles_outputs.results[4].services[cname_1][cname_1_name].state.running
|
|
- not profiles_outputs.results[4].services[cname_2][cname_2_name].state.running
|
|
- profiles_outputs.results[5].services[cname_1][cname_1_name].state.running
|
|
- profiles_outputs.results[5].services[cname_2][cname_2_name].state.running
|
|
- not profiles_outputs.results[6].services[cname_1][cname_1_name].state.running
|
|
- not profiles_outputs.results[6].services[cname_2][cname_2_name].state.running
|
|
- profiles_outputs.results[7].services[cname_1][cname_1_name].state.running
|
|
- profiles_outputs.results[7].services[cname_2][cname_2_name].state.running
|
|
vars:
|
|
cname_1_name: "{{ pname + '_' + cname_1 + '_1' }}"
|
|
cname_2_name: "{{ pname + '_' + cname_2 + '_1' }}"
|
|
when: docker_compose_version is version('1.28.0', '>=')
|
|
|
|
####################################################################
|
|
## Env_file ########################################################
|
|
####################################################################
|
|
|
|
- block:
|
|
- name: Define service and files
|
|
set_fact:
|
|
compose_file: "{{ remote_tmp_dir }}/docker-compose.yml"
|
|
env_file: "{{ remote_tmp_dir }}/.env"
|
|
env_sleep_cmd: sleep 10m
|
|
new_env_file: "{{ remote_tmp_dir }}/new.env"
|
|
new_env_sleep_cmd: sleep 20m
|
|
test_service: |
|
|
version: '3'
|
|
services:
|
|
{{ cname_1 }}:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "${SLEEP_CMD}"'
|
|
stop_grace_period: 1s
|
|
|
|
- name: Define testcases
|
|
set_fact:
|
|
test_cases:
|
|
- test_name: Without env_file option
|
|
- test_name: With env_file option
|
|
env_file: "{{ new_env_file }}"
|
|
|
|
- name: Generate compose file
|
|
ansible.builtin.copy:
|
|
content: "{{ test_service }}"
|
|
dest: "{{ compose_file }}"
|
|
|
|
- name: Generate .env file
|
|
ansible.builtin.copy:
|
|
content: |
|
|
SLEEP_CMD="{{ env_sleep_cmd }}"
|
|
dest: "{{ env_file }}"
|
|
|
|
- name: Generate new.env file
|
|
ansible.builtin.copy:
|
|
content: |
|
|
SLEEP_CMD="{{ new_env_sleep_cmd }}"
|
|
dest: "{{ new_env_file }}"
|
|
|
|
- name: Env_file
|
|
docker_compose:
|
|
project_name: "{{ pname }}"
|
|
project_src: "{{ remote_tmp_dir }}"
|
|
env_file: "{{ test_case.env_file | default(omit) }}"
|
|
register: env_file_outputs
|
|
loop: "{{ test_cases }}"
|
|
loop_control:
|
|
loop_var: test_case
|
|
|
|
- name: Cleanup
|
|
docker_compose:
|
|
project_name: "{{ pname }}"
|
|
state: absent
|
|
definition: "{{ test_service | from_yaml }}"
|
|
|
|
- assert:
|
|
that:
|
|
- "env_sleep_cmd is in (env_file_outputs.results[0].services[cname_1][cname_1_name].cmd | join(' '))"
|
|
- "new_env_sleep_cmd is in (env_file_outputs.results[1].services[cname_1][cname_1_name].cmd | join(' '))"
|
|
vars:
|
|
cname_1_name: "{{ pname + '_' + cname_1 + '_1' }}"
|
|
cname_2_name: "{{ pname + '_' + cname_2 + '_1' }}"
|
|
|
|
- name: Remove files
|
|
ansible.builtin.file:
|
|
path: "{{ file_path }}"
|
|
state: absent
|
|
loop_control:
|
|
loop_var: file_path
|
|
loop:
|
|
- "{{ compose_file }}"
|
|
- "{{ env_file }}"
|
|
- "{{ new_env_file }}"
|
|
when: docker_compose_version is version('1.25.0', '>=')
|
|
|
|
####################################################################
|
|
## Project_src #####################################################
|
|
####################################################################
|
|
|
|
- name: Define service and files
|
|
set_fact:
|
|
compose_file: "{{ remote_tmp_dir }}/docker-compose.yml"
|
|
env_sleep_cmd: sleep 10m
|
|
new_env_sleep_cmd: sleep 20m
|
|
test_service: |
|
|
version: '3'
|
|
services:
|
|
{{ cname_1 }}:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c 10m'
|
|
stop_grace_period: 1s
|
|
|
|
- name: Generate compose file
|
|
ansible.builtin.copy:
|
|
content: "{{ test_service }}"
|
|
dest: "{{ compose_file }}"
|
|
|
|
- name: Start with project_src
|
|
docker_compose:
|
|
project_src: "{{ remote_tmp_dir }}"
|
|
register: project_src_1
|
|
|
|
- name: Start with project_src (idempotent)
|
|
docker_compose:
|
|
project_src: "{{ remote_tmp_dir }}"
|
|
register: project_src_2
|
|
|
|
- name: Stop with project_src
|
|
docker_compose:
|
|
project_src: "{{ remote_tmp_dir }}"
|
|
state: absent
|
|
register: project_src_3
|
|
|
|
- name: Stop with project_src (idempotent)
|
|
docker_compose:
|
|
project_src: "{{ remote_tmp_dir }}"
|
|
state: absent
|
|
register: project_src_4
|
|
|
|
- name: Remove files
|
|
ansible.builtin.file:
|
|
path: "{{ file_path }}"
|
|
state: absent
|
|
loop_control:
|
|
loop_var: file_path
|
|
loop:
|
|
- "{{ compose_file }}"
|
|
|
|
- assert:
|
|
that:
|
|
- project_src_1 is changed
|
|
# - project_src_2 is not changed -- for some reason, this currently fails!
|
|
- project_src_3 is changed
|
|
- project_src_4 is not changed
|