Artem Goncharov 668add9107 Add publish job
Add a job that collects built OpenAPI specs and prepares a single
delivery. Those can be then places to some authority location similar to
the service-types-authority.

Change-Id: I18bfb2a5195f88153d3a23072bc8a4351a5b7f1b
2024-06-13 10:13:22 +02:00

57 lines
1.7 KiB
YAML

---
- hosts: all
vars:
specs_src: "{{ ansible_user_dir }}/{{ codegenerator_work_dir }}/openapi_specs"
tasks:
- name: Ensure local output dirs
delegate_to: localhost
ansible.builtin.file:
path: "{{ zj_output_dir }}"
state: directory
mode: 0755
with_items:
- "{{ zuul.executor.work_root }}/artifacts"
loop_control:
loop_var: zj_output_dir
- name: Collect OpenAPI specs
synchronize:
dest: "{{ zj_output.dest }}"
mode: pull
src: "{{ zj_output.src }}"
verify_host: true
owner: false
group: false
loop:
- dest: "{{ zuul.executor.work_root }}/artifacts"
src: "{{ specs_src }}"
loop_control:
loop_var: zj_output
- name: Find all generated specs
ansible.builtin.find:
paths: "{{ specs_src }}"
patterns: "*.yaml"
recurse: true
# Search for anything and filter later
file_type: "any"
register: openapi_specs
- name: Return artifact to Zuul
zuul_return:
data:
zuul:
artifacts:
- name: "{{ openapi_service }} OpenAPI spec {{ zj_item.path | basename | splitext | first }}"
url: "artifacts/openapi_specs{{ zj_item.path | regex_replace(specs_src) }}"
metadata:
type: openapi
service_type: "{{ openapi_service }}"
version: "{{ zj_item.path | basename | splitext | first }}"
loop: "{{ openapi_specs.files }}"
loop_control:
loop_var: zj_item
when:
# only interested in files/links
- "not zj_item.isdir"