fetch-output-openshift: initial role
This change adds a new fetch-output-openshift role to be able to fetch-output from pod. Change-Id: I45d5115a10254432805a02a77e0ebb35d7fd2dd4
This commit is contained in:
parent
5ea9bac2df
commit
67e2abda5b
@ -5,6 +5,7 @@ Log Roles
|
||||
.. zuul:autorole:: ara-report
|
||||
.. zuul:autorole:: ensure-output-dirs
|
||||
.. zuul:autorole:: fetch-output
|
||||
.. zuul:autorole:: fetch-output-openshift
|
||||
.. zuul:autorole:: generate-zuul-manifest
|
||||
.. zuul:autorole:: htmlify-logs
|
||||
.. zuul:autorole:: merge-output-to-logs
|
||||
|
26
roles/fetch-output-openshift/README.rst
Normal file
26
roles/fetch-output-openshift/README.rst
Normal file
@ -0,0 +1,26 @@
|
||||
Collect output from build pods
|
||||
|
||||
This role can be used instead of the :zuul:role:`fetch-output` role when the
|
||||
synchronize module doesn't work with kubectl connection.
|
||||
|
||||
This role requires the origin-client `oc` to be installed.
|
||||
|
||||
**Role Variables**
|
||||
|
||||
.. zuul:rolevar:: zuul_output_dir
|
||||
:default: {{ ansible_user_dir }}/zuul-output
|
||||
|
||||
Base directory for collecting job output.
|
||||
|
||||
.. zuul:rolevar:: openshift_pods
|
||||
:default: {{ zuul.resources }}
|
||||
|
||||
The dictionary of pod name, pod information to copy the sources to.
|
||||
|
||||
.. zuul:rolevar:: zuul_log_verbose
|
||||
:default: false
|
||||
|
||||
The synchronize task in this role outputs a lot of information. By
|
||||
default, no_log is set to avoid overwhelming a reader of the logs.
|
||||
Set this to true to disable that behavior if it becomes necessary
|
||||
to debug this role.
|
3
roles/fetch-output-openshift/defaults/main.yaml
Normal file
3
roles/fetch-output-openshift/defaults/main.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
openshift_pods: "{{ zuul.resources }}"
|
||||
zuul_output_dir: "{{ ansible_user_dir }}/zuul-output"
|
||||
zuul_log_verbose: false
|
29
roles/fetch-output-openshift/tasks/main.yaml
Normal file
29
roles/fetch-output-openshift/tasks/main.yaml
Normal file
@ -0,0 +1,29 @@
|
||||
- name: Set log path for multiple nodes
|
||||
set_fact:
|
||||
log_path: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}"
|
||||
when: groups['all'] | length > 1
|
||||
|
||||
- name: Set log path for single node
|
||||
set_fact:
|
||||
log_path: "{{ zuul.executor.log_root }}"
|
||||
when: log_path is not defined
|
||||
|
||||
- name: Ensure local output dirs
|
||||
delegate_to: localhost
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ log_path }}"
|
||||
- "{{ log_path }}/npm"
|
||||
- "{{ zuul.executor.work_root }}/artifacts"
|
||||
- "{{ zuul.executor.work_root }}/docs"
|
||||
|
||||
- include_tasks: rsync.yaml
|
||||
when: item.1.pod is defined
|
||||
loop: "{{ openshift_pods.items()|list }}"
|
||||
run_once: true
|
||||
|
||||
- name: Remove empty directory
|
||||
command: find "{{ zuul.executor.work_root }}" -empty -type d -delete
|
||||
delegate_to: localhost
|
19
roles/fetch-output-openshift/tasks/rsync.yaml
Normal file
19
roles/fetch-output-openshift/tasks/rsync.yaml
Normal file
@ -0,0 +1,19 @@
|
||||
---
|
||||
- name: Fetch zuul-output from the pod
|
||||
command: >
|
||||
oc --context "{{ item.1.context }}"
|
||||
--namespace "{{ item.1.namespace }}"
|
||||
rsync -q --progress=false
|
||||
{{ item.1.pod }}:{{ output.src }}/
|
||||
{{ output.dst }}/
|
||||
no_log: "{{ not zuul_log_verbose }}"
|
||||
delegate_to: localhost
|
||||
loop:
|
||||
- src: "{{ zuul_output_dir }}/logs"
|
||||
dst: "{{ log_path }}"
|
||||
- src: "{{ zuul_output_dir }}/artifacts"
|
||||
dst: "{{ zuul.executor.work_root }}/artifacts"
|
||||
- src: "{{ zuul_output_dir }}/docs"
|
||||
dst: "{{ zuul.executor.work_root }}/docs"
|
||||
loop_control:
|
||||
loop_var: output
|
Loading…
Reference in New Issue
Block a user