openstack-ansible/zuul.d/playbooks/post.yml
Jesse Pretorius 9b86311836 Fix ARA/log data collection and reporting
Currently the ARA database is not collected after each
test, nor is the reporting done as it should be. This
patch does the following to resolve that:

1. Informs the log collection to collect to and from
   the right source folder.

2. Verifies that the logs directory exists to ensure
   that a missing directory does not cause the job to
   fail.

3. Makes the log collection quiet, so that only errors
   are reported when pulling them back to the zuul
   executor.

4. Removes a layer of indirection by making zuul use
   the scripts library directly instead of working
   through yet another wrapper script.

5. Sets the exit code properly so that the ARA report
   is run on test execution failure.

Change-Id: Ie8da165a33180d03c840a69dae0aa5f424a69e50
2018-02-15 19:51:30 +00:00

65 lines
2.1 KiB
YAML

---
# Copyright 2017, Logan Vig <logan2211@gmail.com>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- hosts: all
tasks:
- name: Set current test repo (cross-repo)
set_fact:
current_test_repo: "git.openstack.org/{{ osa_test_repo }}"
when:
- osa_test_repo is defined
- name: Set current test repo (non-cross-repo)
set_fact:
current_test_repo: "{{ zuul.project.canonical_name }}"
when:
- osa_test_repo is not defined
- name: Run log collection script
shell: |
source scripts/scripts-library.sh
gate_job_exit_tasks
become: yes
become_user: root
args:
chdir: "{{ ansible_user_dir }}/src/{{ current_test_repo }}"
executable: /bin/bash
environment:
# ZUUL_PROJECT is used by the log collection functions to enable
# log collection configuration specific to OpenStack CI
ZUUL_PROJECT: "{{ zuul.project.short_name }}"
TEST_EXIT_CODE: "{{ zuul_success | lower }}"
GATE_LOG_DIR: "{{ ansible_user_dir }}/src/{{ current_test_repo }}/logs"
- name: Check whether a logs folder exists
stat:
path: "{{ ansible_user_dir }}/src/{{ current_test_repo }}/logs"
get_attributes: no
get_checksum: no
get_md5: no
get_mime: no
register: logs_folder
- name: Copy logs back to the executor
synchronize:
src: "{{ ansible_user_dir }}/src/{{ current_test_repo }}/logs"
dest: "{{ zuul.executor.log_root }}/"
mode: pull
rsync_opts:
- "--quiet"
when:
- logs_folder.stat is defined
- logs_folder.stat.exists | bool