- name: Set tox log path for multiple nodes set_fact: log_path: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}/tox" when: groups['all'] | length > 1 - name: Set tox log path for single node set_fact: log_path: "{{ zuul.executor.log_root }}/tox" when: log_path is not defined - name: Ensure local tox dir file: path: "{{ log_path }}" state: directory delegate_to: localhost - name: Ensure zuul-output tox dir file: path: "{{ zuul_output_dir }}/logs/tox" state: directory when: zuul_use_fetch_output - name: Set envlist fact set_fact: envlist: "{{ tox_envlist.split(',') }}" when: tox_envlist is defined and tox_envlist != 'ALL' and tox_envlist - name: Find all default environments command: "{{ tox_executable }} -l" args: chdir: "{{ zuul_work_dir }}" register: tox_environments when: tox_envlist is not defined or not tox_envlist - name: Find all default environments command: "{{ tox_executable }} -a" args: chdir: "{{ zuul_work_dir }}" register: tox_environments when: - tox_envlist is defined - tox_envlist == 'ALL' - name: Set envlist fact set_fact: envlist: "{{ tox_environments.stdout_lines }}" when: tox_envlist is not defined or not tox_envlist or tox_envlist == 'ALL' - name: Copy tox logs copy: dest: "{{ zuul_output_dir }}/logs/tox/" src: "{{ zuul_work_dir }}/.tox/{{ zj_testenv }}/log/" remote_src: true loop: "{{ envlist }}" loop_control: loop_var: zj_testenv # some tox runs may not create a virtualenv and thus have # no ./tox/env directory failed_when: false when: zuul_use_fetch_output - name: Collect tox logs synchronize: dest: "{{ log_path }}" mode: pull src: "{{ zuul_work_dir }}/.tox/{{ zj_testenv }}/log/" verify_host: true owner: no group: no loop: "{{ envlist }}" loop_control: loop_var: zj_testenv # some tox runs may not create a virtualenv and thus have # no ./tox/env directory failed_when: false when: not zuul_use_fetch_output