fetch-tox-output: introduce zuul_use_fetch_output
This change enables using fetch-tox role along with the fetch-output role. By default the role still synchronizes artifacts back to the executor. Change-Id: Iffe5ffc52ee4c765b2e23ab8b3235b6bc7c510d8
This commit is contained in:
parent
4d168ed016
commit
56ee80234c
@ -16,3 +16,11 @@ Collect log output from a tox build
|
|||||||
:default: {{ zuul.project.src_dir }}
|
:default: {{ zuul.project.src_dir }}
|
||||||
|
|
||||||
Directory tox was run in.
|
Directory tox was run in.
|
||||||
|
|
||||||
|
.. zuul:rolevar:: zuul_use_fetch_output
|
||||||
|
:default: false
|
||||||
|
|
||||||
|
Whether to synchronize files to the executor work dir, or to copy them
|
||||||
|
on the test instance.
|
||||||
|
When set to false, the role synchronizes the file to the executor.
|
||||||
|
When set to true, the job needs to use the fetch-output role later.
|
||||||
|
@ -5,3 +5,6 @@ tox_envlist: venv
|
|||||||
tox_executable: tox
|
tox_executable: tox
|
||||||
|
|
||||||
zuul_work_dir: "{{ zuul.project.src_dir }}"
|
zuul_work_dir: "{{ zuul.project.src_dir }}"
|
||||||
|
|
||||||
|
zuul_output_dir: "{{ ansible_user_dir }}/zuul-output"
|
||||||
|
zuul_use_fetch_output: "{{ zuul_site_use_fetch_output|default(false) }}"
|
||||||
|
@ -14,6 +14,12 @@
|
|||||||
state: directory
|
state: directory
|
||||||
delegate_to: localhost
|
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
|
- name: Set envlist fact
|
||||||
set_fact:
|
set_fact:
|
||||||
envlist: "{{ tox_envlist.split(',') }}"
|
envlist: "{{ tox_envlist.split(',') }}"
|
||||||
@ -31,6 +37,17 @@
|
|||||||
envlist: "{{ tox_environments.stdout_lines }}"
|
envlist: "{{ tox_environments.stdout_lines }}"
|
||||||
when: tox_envlist is not defined or tox_envlist|lower == 'all'
|
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
|
- name: Collect tox logs
|
||||||
synchronize:
|
synchronize:
|
||||||
dest: "{{ log_path }}"
|
dest: "{{ log_path }}"
|
||||||
@ -41,3 +58,4 @@
|
|||||||
# some tox runs may not create a virtualenv and thus have
|
# some tox runs may not create a virtualenv and thus have
|
||||||
# no ./tox/env directory
|
# no ./tox/env directory
|
||||||
failed_when: false
|
failed_when: false
|
||||||
|
when: not zuul_use_fetch_output
|
||||||
|
67
test-playbooks/python/fetch-tox-output.yaml
Normal file
67
test-playbooks/python/fetch-tox-output.yaml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
- hosts: all
|
||||||
|
pre_tasks:
|
||||||
|
# Run ensure-output-dirs now as it is not performed speculatively
|
||||||
|
- import_role:
|
||||||
|
name: ensure-output-dirs
|
||||||
|
|
||||||
|
- name: Simplify tox config
|
||||||
|
copy:
|
||||||
|
content: "{{ item.content }}"
|
||||||
|
dest: "{{ zuul.project.src_dir }}/{{ item.dest }}"
|
||||||
|
with_items:
|
||||||
|
- content: |
|
||||||
|
[testenv]
|
||||||
|
sitepackages = True
|
||||||
|
usedevelop = True
|
||||||
|
|
||||||
|
[testenv:venv]
|
||||||
|
commands = python -c 'exit(0)'
|
||||||
|
dest: tox.ini
|
||||||
|
- content: |
|
||||||
|
import setuptools
|
||||||
|
setuptools.setup()
|
||||||
|
dest: setup.py
|
||||||
|
- content: ""
|
||||||
|
dest: setup.cfg
|
||||||
|
|
||||||
|
- name: Generate tox results
|
||||||
|
include_role:
|
||||||
|
name: "{{ item }}"
|
||||||
|
with_items:
|
||||||
|
- ensure-tox
|
||||||
|
- ensure-python
|
||||||
|
- tox
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- import_role:
|
||||||
|
name: fetch-tox-output
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: Undo the log_path fact set by fetch-javascript-output
|
||||||
|
set_fact:
|
||||||
|
log_path: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}"
|
||||||
|
when: groups['all'] | length > 1
|
||||||
|
|
||||||
|
- name: Undo the log_path fact set log path for single node
|
||||||
|
set_fact:
|
||||||
|
log_path: "{{ zuul.executor.log_root }}"
|
||||||
|
when: groups['all'] | length == 1
|
||||||
|
|
||||||
|
- import_role:
|
||||||
|
name: fetch-output
|
||||||
|
when: zuul_use_fetch_output
|
||||||
|
|
||||||
|
post_tasks:
|
||||||
|
- name: Check for artifact on the test instance
|
||||||
|
stat:
|
||||||
|
path: "{{ ansible_user_dir }}/zuul-output/logs/tox/venv-0.log"
|
||||||
|
register: _test_artifact
|
||||||
|
failed_when: not _test_artifact.stat.exists
|
||||||
|
when: zuul_use_fetch_output
|
||||||
|
|
||||||
|
- name: Check for artifact on the executor
|
||||||
|
stat:
|
||||||
|
path: "{{ zuul.executor.log_root }}/tox/venv-0.log"
|
||||||
|
delegate_to: localhost
|
||||||
|
register: _executor_artifact
|
||||||
|
failed_when: not _executor_artifact.stat.exists
|
@ -22,10 +22,32 @@
|
|||||||
# tools/update-test-platforms.py
|
# tools/update-test-platforms.py
|
||||||
# Please re-run to generate new job lists
|
# Please re-run to generate new job lists
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-fetch-tox-output
|
||||||
|
description: Test the fetch-tox-output
|
||||||
|
files:
|
||||||
|
- roles/ensure-output-dirs/.*
|
||||||
|
- roles/fetch-tox-output/.*
|
||||||
|
- roles/fetch-output/.*
|
||||||
|
run: test-playbooks/python/fetch-tox-output.yaml
|
||||||
|
vars:
|
||||||
|
zuul_use_fetch_output: true
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-fetch-tox-output-synchronize
|
||||||
|
description: Test the fetch-tox-output
|
||||||
|
files:
|
||||||
|
- roles/fetch-tox-output/.*
|
||||||
|
run: test-playbooks/python/fetch-tox-output.yaml
|
||||||
|
vars:
|
||||||
|
zuul_use_fetch_output: false
|
||||||
|
|
||||||
- project:
|
- project:
|
||||||
check:
|
check:
|
||||||
jobs: &id001
|
jobs: &id001
|
||||||
- zuul-jobs-test-ensure-sphinx
|
- zuul-jobs-test-ensure-sphinx
|
||||||
- zuul-jobs-test-tox-siblings
|
- zuul-jobs-test-tox-siblings
|
||||||
|
- zuul-jobs-test-fetch-tox-output
|
||||||
|
- zuul-jobs-test-fetch-tox-output-synchronize
|
||||||
gate:
|
gate:
|
||||||
jobs: *id001
|
jobs: *id001
|
||||||
|
Loading…
Reference in New Issue
Block a user