63 lines
2.1 KiB
YAML
Raw Normal View History

- name: Get all job names from gate pipeline
uri:
url: "{{ download_artifact_api }}/builds?{{ download_artifact_query }}"
register: build_output
vars:
download_artifact_api: "https://zuul.opendev.org/api/tenant/{{ zuul.tenant }}"
download_artifact_query: "change={{ zuul.change }}&patchset={{ zuul.patchset }}&pipeline=gate"
- name: Set charm name fact
set_fact:
charm_name: "{{ (zuul.job | default('')).removeprefix('publish-charm-') }}"
- name: Get relevant charm build jobs
set_fact:
relevant_charm_build_jobs: "{{ build_output.json | selectattr('job_name', 'match', '^charm-build-'+ charm_name +'$') | map(attribute='job_name') | list }}"
- name: Print relevant build jobs
debug:
msg: "Relevant charm build jobs: {{ relevant_charm_build_jobs }}"
- name: built charm is present locally (artifact from gate pipeline)
include_role:
name: download-artifact
vars:
download_artifact_api: "https://zuul.opendev.org/api/tenant/{{ zuul.tenant }}"
download_artifact_type: charm
download_artifact_pipeline: gate
download_artifact_job: "{{ item }}"
download_artifact_directory: "{{ zuul.project.src_dir }}"
with_items: "{{ relevant_charm_build_jobs }}"
- name: Get all downloaded charm names
args:
chdir: "{{ zuul.project.src_dir }}"
executable: /bin/bash
shell: |
charms=$(ls *.charm | cut -d"." -f 1)
if [[ $? != 0 ]]; then
echo ""
else
echo $charms | tr ' ' '\n'
fi
register: built_charms
- name: Prepare charm channel dict for downloaded charms
set_fact:
charm_channels: "{{ charm_channels | default({}) | combine({item.key: item.value}) }}"
loop: "{{ lookup('ansible.builtin.dict', publish_channels) }}"
when: "{{ item.key in built_charms.stdout_lines }}"
- name: Print charm channel dict
debug:
msg: "Charms to be published: {{ charm_channels | default({}) }}"
- name: Publish charms in a loop
include_tasks: "publish.yaml"
vars:
charm_build_name: "{{ channel.key }}"
publish_channel: "{{ channel.value }}"
loop: "{{ charm_channels | default({}) | dict2items }}"
loop_control:
loop_var: channel