- 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 - name: Find all environments command: tox -l args: chdir: "{{ zuul_work_dir }}" register: tox_environments when: tox_envlist is not defined or tox_envlist|lower == 'all' - name: Set envlist fact set_fact: envlist: "{{ tox_environments.stdout_lines }}" when: tox_envlist is not defined or tox_envlist|lower == 'all' - name: Copy tox logs copy: dest: "{{ zuul_output_dir }}/logs/tox/" src: "{{ zuul_work_dir }}/.tox/{{ item }}/log/" remote_src: true with_items: "{{ envlist }}" # 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/{{ item }}/log/" verify_host: true with_items: "{{ envlist }}" # some tox runs may not create a virtualenv and thus have # no ./tox/env directory failed_when: false when: not zuul_use_fetch_output