This is a temporary change until this is merged https://review.opendev.org/c/zuul/zuul-jobs/+/964255 Change-Id: I37393416e40c66b292bdee22dc9e541490d428aa Signed-off-by: Vladimir Kozhukalov <kozhukalov@gmail.com>
89 lines
3.4 KiB
YAML
89 lines
3.4 KiB
YAML
- name: Validate zj_image.repository is full "url"
|
|
when:
|
|
- "'/' not in zj_image.repository"
|
|
fail:
|
|
msg: "{{ zj_image.repository }} must be a full container image url including registry location"
|
|
|
|
- name: Set container filename arg
|
|
set_fact:
|
|
containerfile: "{{ zj_image.container_filename | default(container_filename) | default('') }}"
|
|
|
|
- name: Set up siblings
|
|
include_tasks: siblings.yaml
|
|
|
|
# The command below always tags the images for the temp_registry (so
|
|
# they can be pulled back onto the host image cache), and also tags
|
|
# them for the buildset registry if one is present.
|
|
- name: Set base docker build command
|
|
set_fact:
|
|
docker_buildx_command: >-
|
|
docker buildx build {{ zj_image.path | default('.') }}
|
|
{% if containerfile %}-f {{ containerfile }}{% endif %}
|
|
--network=host
|
|
{% if zj_image.target | default(false) -%}
|
|
--target {{ zj_image.target }}
|
|
{% endif -%}
|
|
{% for build_arg in zj_image.build_args | default([]) -%}
|
|
--build-arg {{ build_arg }}
|
|
{% endfor -%}
|
|
{% if zj_image.siblings | default(false) -%}
|
|
--build-arg "ZUUL_SIBLINGS={{ zj_image.siblings | join(' ') }}"
|
|
{% endif -%}
|
|
{% for tag in zj_image.tags | default(['latest']) -%}
|
|
--tag {{ temp_registry.host }}:{{ temp_registry.port }}/{{ zj_image.repository }}:{{ tag }}
|
|
{% if buildset_registry | default(false) -%}
|
|
--tag {{ buildset_registry_alias }}:{{ buildset_registry.port }}/{{ zj_image.repository }}:{{ tag }}
|
|
{% endif -%}
|
|
{% endfor -%}
|
|
{% for label in zj_image.labels | default([]) -%}
|
|
--label "{{ label }}"
|
|
{% endfor %}
|
|
{% if zuul.change | default(false) -%}
|
|
--label "org.zuul-ci.change={{ zuul.change }}"
|
|
{% endif -%}
|
|
--label "org.zuul-ci.change_url={{ zuul.change_url }}"
|
|
|
|
- name: Build and push images for all arches
|
|
command: "{{ docker_buildx_command }} {% if _multiarch %}--platform={{ zj_image.arch | join(',') }}{% endif %} --push"
|
|
args:
|
|
chdir: "{{ zuul_work_dir }}/{{ zj_image.context }}"
|
|
|
|
- name: Pull images from temporary registry
|
|
command: >-
|
|
docker pull {{ temp_registry.host }}:{{ temp_registry.port }}/{{ zj_image.repository }}:{{ zj_image_tag }}
|
|
loop: "{{ zj_image.tags | default(['latest']) }}"
|
|
loop_control:
|
|
loop_var: zj_image_tag
|
|
|
|
- name: Locally tag with change id or pipeline name so push works later
|
|
vars:
|
|
tag_prefix: "{{ ('change_' + zuul.change) if (zuul.change is defined) else zuul.pipeline }}_"
|
|
command: >-
|
|
docker tag
|
|
{{ temp_registry.host }}:{{ temp_registry.port }}/{{ zj_image.repository }}:{{ zj_image_tag }}
|
|
{{ zj_image.repository }}:{{ tag_prefix }}{{ zj_image_tag }}
|
|
loop: "{{ zj_image.tags | default(['latest']) }}"
|
|
loop_control:
|
|
loop_var: zj_image_tag
|
|
|
|
- name: Print tagged image names
|
|
vars:
|
|
tag_prefix: "{{ ('change_' + zuul.change) if (zuul.change is defined) else zuul.pipeline }}_"
|
|
debug:
|
|
msg: "Tagged image {{ zj_image.repository }}:{{ tag_prefix }}{{ zj_image_tag }}"
|
|
loop: "{{ zj_image.tags | default(['latest']) }}"
|
|
loop_control:
|
|
loop_var: zj_image_tag
|
|
|
|
- name: Locally tag so push works later
|
|
command: >-
|
|
docker tag
|
|
{{ temp_registry.host }}:{{ temp_registry.port }}/{{ zj_image.repository }}:{{ zj_image_tag }}
|
|
{{ zj_image.repository }}:{{ zj_image_tag }}
|
|
loop: "{{ zj_image.tags | default(['latest']) }}"
|
|
loop_control:
|
|
loop_var: zj_image_tag
|
|
|
|
- name: Cleanup sibling source directory
|
|
include_tasks: clean-siblings.yaml
|