zuul-jobs/roles/fetch-javascript-output/tasks/main.yaml
Michael Johnson b162a69c8b Collect the coverage report for npm test jobs
The npm test run can optionally create an html coverage report.
This change causes the post job to check if the directory exists,
and if so also collect the coverage report with the npm logs.

Change-Id: I7cc50c352c3feeed283888cbe7f02c6b1264b7b0
2018-06-12 21:27:03 +00:00

143 lines
3.4 KiB
YAML

- name: Set log path for multiple nodes
set_fact:
log_path: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}/npm"
cover_path: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}/cover/"
when: groups['all'] | length > 1
- name: Set log path for single node
set_fact:
log_path: "{{ zuul.executor.log_root }}/npm"
cover_path: "{{ zuul.executor.log_root }}/cover/"
when: log_path is not defined
- name: Ensure local tox dir
file:
path: "{{ log_path }}"
state: directory
delegate_to: localhost
- name: Check for yarn.lock
stat:
path: "{{ zuul_work_dir }}/yarn.lock"
get_checksum: false
get_mime: false
get_md5: false
register: yarn_lock
- name: Check for shrinkwrap
stat:
path: "{{ zuul_work_dir }}/npm-shrinkwrap.json"
get_checksum: false
get_mime: false
get_md5: false
when: not yarn_lock.stat.exists
register: shrinkwrap
- name: Run npm prune because of https://github.com/npm/npm/issues/6298
when:
- not yarn_lock.stat.exists
- not shrinkwrap.stat.exists
command: npm prune
environment:
DISPLAY: ':99'
args:
chdir: "{{ zuul_work_dir }}"
- name: Run npm shrinkwrap
when:
- not yarn_lock.stat.exists
- not shrinkwrap.stat.exists
command: npm shrinkwrap
environment:
DISPLAY: ':99'
args:
chdir: "{{ zuul_work_dir }}"
- name: Check for reports
stat:
path: "{{ zuul_work_dir }}/reports"
get_checksum: false
get_mime: false
get_md5: false
register: reports_stat
- name: Collect npm reports
synchronize:
dest: "{{ log_path }}"
mode: pull
src: "{{ zuul_work_dir }}/reports"
verify_host: true
when: reports_stat.stat.exists
- name: Check for karma.subunit files
stat:
path: "{{ zuul_work_dir }}/karma.subunit"
get_checksum: false
get_mime: false
get_md5: false
register: karma_stat
- name: Collect karma subunit files
synchronize:
dest: "{{ log_path }}"
mode: pull
src: "{{ zuul_work_dir }}/karma.subunit"
verify_host: true
when: karma_stat.stat.exists
- name: Check again for shrinkwrap
when: not yarn_lock.stat.exists
stat:
path: "{{ zuul_work_dir }}/npm-shrinkwrap.json"
get_checksum: false
get_mime: false
get_md5: false
register: shrinkwrap_final
- name: Collect shrinkwrap file
synchronize:
dest: "{{ log_path }}"
mode: pull
src: "{{ zuul_work_dir }}/npm-shrinkwrap.json"
verify_host: true
when:
- not yarn_lock.stat.exists
- shrinkwrap_final.stat.exists
- name: Check for built output
stat:
path: "{{ zuul_work_dir }}/{{ javascript_content_dir }}"
get_checksum: false
get_mime: false
get_md5: false
register: javascript_output
- name: Collect javascript output
synchronize:
src: "{{ zuul_work_dir }}/{{ javascript_content_dir }}/"
dest: "{{ log_path }}/html/"
mode: pull
copy_links: "{{ javascript_copy_links }}"
verify_host: true
when: javascript_output.stat.exists
- name: Check to see if coverage report exists
stat:
path: "{{ coverage_output_src }}"
register: coverage_report_stat
- name: Ensure cover tox dir
file:
path: "{{ cover_path }}"
state: directory
delegate_to: localhost
when: coverage_report_stat.stat.exists
- name: Collect coverage details output
synchronize:
dest: "{{ cover_path }}"
mode: pull
src: "{{ coverage_output_src }}"
verify_host: true
when: coverage_report_stat.stat.exists