Mohammed Naser | e70062f | 2025-01-28 18:15:17 -0500 | [diff] [blame^] | 1 | - name: Build images |
| 2 | block: |
| 3 | - name: Create metadata file |
| 4 | ansible.builtin.tempfile: |
| 5 | state: file |
| 6 | prefix: metadata |
| 7 | suffix: .json |
| 8 | register: depot_bake_metadata_file |
| 9 | |
| 10 | - name: Run "depot bake" |
| 11 | ansible.builtin.command: >- |
| 12 | {{ ensure_depot_path | default('/usr/local/bin') }}/depot bake --push --metadata-file={{ depot_bake_metadata_file.path }} |
| 13 | args: |
| 14 | chdir: "{{ zuul.project.src_dir }}" |
| 15 | environment: "{{ _depot_bake_environment | combine(depot_bake_environment) }}" |
| 16 | |
| 17 | - name: Slurp the metadata file |
| 18 | ansible.builtin.slurp: |
| 19 | src: "{{ depot_bake_metadata_file.path }}" |
| 20 | register: depot_bake_metadata |
| 21 | |
| 22 | - name: Unmarshal the metadata file |
| 23 | ansible.builtin.set_fact: |
| 24 | depot_bake_metadata: "{{ depot_bake_metadata.content | b64decode | from_json }}" |
| 25 | |
| 26 | - name: Build empty list of artifacts |
| 27 | ansible.builtin.set_fact: |
| 28 | depot_bake_artifacts: [] |
| 29 | |
| 30 | - name: Append each artifact to the list |
| 31 | ansible.builtin.set_fact: |
| 32 | depot_bake_artifacts: "{{ depot_bake_artifacts + [depot_bake_artifact] }}" |
| 33 | loop: "{{ depot_bake_metadata | dict2items }}" |
| 34 | loop_control: |
| 35 | label: "{{ item.key }}" |
| 36 | when: |
| 37 | - item.key != "depot.build" |
| 38 | - item.value != {} |
| 39 | - item.value["image.name"] is defined |
| 40 | vars: |
| 41 | depot_bake_artifact: |
| 42 | name: "{{ item.value['image.name'] }}" |
| 43 | url: "docker://{{ item.value['image.name'] }}" |
| 44 | metadata: |
| 45 | type: container_image |
| 46 | repository: "{{ item.value['image.name'] | split(':') | first }}" |
| 47 | tag: "{{ item.value['image.name'] | split(':') | last }}" |
| 48 | |
| 49 | - name: Return artifacts for each image |
| 50 | zuul_return: |
| 51 | data: |
| 52 | zuul: |
| 53 | artifacts: "{{ depot_bake_artifacts }}" |
| 54 | |
| 55 | always: |
| 56 | - name: Cleanup metadata file |
| 57 | ansible.builtin.file: |
| 58 | path: "{{ depot_bake_metadata_file.path }}" |
| 59 | state: absent |