blob: 3c1d043702704d0a0edb7dd21fe4008a48803206 [file] [log] [blame]
Mohammed Nasere70062f2025-01-28 18:15:17 -05001- 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