Files
zuul-jobs/roles/upload-image-swift/tasks/main.yaml
James E. Blair a881f3192a Update upload-image-swift
This updates upload-image-swift with some changes that have merged
to the originating role in opendev/zuul-providers.  Hopefully with
this change, we can move opendev to use this role.

This anticipates https://review.opendev.org/956219 by adding a default
value of zuul.image_build_name.  That change is not set as a dependency
because it's not strictly necessary and it's harmless if it merges out
of order (or not at all).

Change-Id: Ib26ae8e54174650a2d082ef2504ef70f4804dbc4
2025-08-01 09:04:38 -07:00

82 lines
2.2 KiB
YAML

# Run the checksums in the background while we're working
- name: Get sha256 hash
stat:
path: '{{ upload_image_swift_filename }}'
checksum_algorithm: sha256
async: 600
poll: 0
register: sha256_task
- name: Get md5 hash
stat:
path: '{{ upload_image_swift_filename }}'
checksum_algorithm: md5
async: 600
poll: 0
register: md5_task
- name: Check if zstd is installed
shell: "command -v zstd || exit 1"
register: zstd_installed
failed_when: false
- name: Compress image
when:
- "zstd_installed.rc == 0"
- "upload_image_swift_format in ['raw', 'vhd']"
command: zstd '{{ upload_image_swift_filename }}'
- name: Set extension
set_fact:
zj_upload_image_swift_extension: ''
- name: Set extension
when:
- "zstd_installed.rc == 0"
- "upload_image_swift_format in ['raw', 'vhd']"
set_fact:
zj_upload_image_swift_extension: '.zst'
- name: Upload image to swift
upload_image_swift:
cloud: '{{ upload_image_swift_cloud_config }}'
container: '{{ upload_image_swift_container }}'
filename: '{{ upload_image_swift_filename }}{{ zj_upload_image_swift_extension }}'
name: '{{ upload_image_swift_name }}{{ zj_upload_image_swift_extension }}'
delete_after: '{{ upload_image_swift_delete_after }}'
register: upload_results
- name: Delete uncompressed image
when: "upload_image_swift_format in ['raw', 'vhd']"
command: rm '{{ upload_image_swift_filename }}'
- name: Wait for sha256
async_status:
jid: "{{ sha256_task.ansible_job_id }}"
register: sha256
until: sha256.finished
retries: 1
delay: 10
- name: Wait for md5
async_status:
jid: "{{ md5_task.ansible_job_id }}"
register: md5
until: md5.finished
retries: 1
delay: 10
- name: Return artifact to Zuul
zuul_return:
data:
zuul:
artifacts:
- name: '{{ upload_image_swift_format }} image'
url: '{{ upload_results.url }}'
metadata:
type: 'zuul_image'
image_name: '{{ upload_image_swift_image_name }}'
format: '{{ upload_image_swift_format }}'
sha256: '{{ sha256.stat.checksum }}'
md5sum: '{{ md5.stat.checksum }}'