zuul-jobs/roles/ara-report/tasks/main.yaml

83 lines
2.7 KiB
YAML

- block:
- name: Check that ARA is installed
command: bash -c "type -p ara"
ignore_errors: yes
register: ara_installed
- name: Warn if ARA is not installed
debug:
msg: |
ARA is not installed on the executor node, no report will be available.
when: ara_installed.rc != 0
- name: Check that the ARA database exists
stat:
path: "{{ ara_database_path }}"
register: ara_db
- name: Warn if no database is found
debug:
msg: |
No report will be available because the ARA database was not found.
when: not ara_db.stat.exists
- name: Validate role configuration
assert:
that:
- ara_report_type in ['html', 'database']
- ara_compress_html in [true, false]
- ara_report_run in [true, false, 'failure']
rescue:
- name: Role validation rescue
debug:
msg: |
Something failed during the validation of the role configuration
and pre-requirements.
It is likely that no report will be available, please verify the
execution and the parameters of the role for details.
- name: Prefix the log path with the log root
set_fact:
final_ara_report_path: "{{ zuul.executor.log_root }}/{{ ara_report_path }}"
- when:
- ara_installed.rc == 0
- ara_db.stat.exists
- ara_report_type == 'html'
block:
# Always generate (true), never (false) or only on failure ('failure')
# Additionally cover for edge cases where zuul_success might be undefined
- name: Generate ARA HTML output
command: "ara generate html {{ final_ara_report_path }}"
environment:
ARA_DATABASE: "sqlite:///{{ ara_database_path }}"
when: ara_report_run | bool or
(ara_report_run == 'failure' and not zuul_success | default(false) | bool)
register: ara_generated
- name: Compress ARA HTML output
command: gzip --recursive --best {{ final_ara_report_path }}
when:
- ara_compress_html | bool
- not ara_generated | skipped
rescue:
- name: HTML generation rescue
debug:
msg: |
Something failed during the generation of the HTML report.
Please verify the execution of the role for details.
- when:
- ara_installed.rc == 0
- ara_db.stat.exists
- ara_report_type == 'database'
- ara_report_run | bool or (ara_report_run == 'failure' and not zuul_success | default(false) | bool)
block:
- name: Create the ARA database report directory
file:
path: "{{ final_ara_report_path }}"
state: directory
- name: Save the ARA database
command: cp {{ ara_database_path }} {{ final_ara_report_path }}