
This corrects the following error when upload-docker-image is used in a release pipeline: The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'change' Change-Id: I70cd566ddd0b931d635b20107d652f3591a133b6
72 lines
2.7 KiB
YAML
72 lines
2.7 KiB
YAML
- name: Set up siblings
|
|
include_tasks: siblings.yaml
|
|
|
|
- name: Set base docker build command
|
|
set_fact:
|
|
docker_buildx_command: >-
|
|
docker buildx build {{ zj_image.path | default('.') }} -f {{ zj_image.dockerfile | default(docker_dockerfile) }}
|
|
{% 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']) -%}
|
|
{% if zuul.change | default(false) -%}
|
|
--tag {{ buildset_registry_alias }}:{{ buildset_registry.port }}/{{ zj_image.repository }}:change_{{ zuul.change }}_{{ tag }}
|
|
{% endif -%}
|
|
--tag {{ buildset_registry_alias }}:{{ buildset_registry.port }}/{{ zj_image.repository }}:{{ tag }}
|
|
{% 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 images for all arches
|
|
command: "{{ docker_buildx_command }} --platform={{ zj_image.arch | join(',') }}"
|
|
args:
|
|
chdir: "{{ zuul_work_dir }}/{{ zj_image.context }}"
|
|
environment:
|
|
DOCKER_CLI_EXPERIMENTAL: enabled
|
|
|
|
- name: Push arch-specific layers one at a time
|
|
command: "{{ docker_buildx_command }} --platform={{ zj_arch }} --push"
|
|
args:
|
|
chdir: "{{ zuul_work_dir }}/{{ zj_image.context }}"
|
|
environment:
|
|
DOCKER_CLI_EXPERIMENTAL: enabled
|
|
loop: '{{ zj_image.arch }}'
|
|
loop_control:
|
|
loop_var: zj_arch
|
|
|
|
- name: Push final to buildset registry
|
|
command: "{{ docker_buildx_command }} --platform={{ zj_image.arch | join(',') }} --push"
|
|
args:
|
|
chdir: "{{ zuul_work_dir }}/{{ zj_image.context }}"
|
|
environment:
|
|
DOCKER_CLI_EXPERIMENTAL: enabled
|
|
|
|
- name: Pull images from buildset registry
|
|
command: >-
|
|
docker pull {{ zj_image.repository }}:{{ zj_image_tag }}
|
|
loop: "{{ zj_image.tags | default(['latest']) }}"
|
|
loop_control:
|
|
loop_var: zj_image_tag
|
|
|
|
- name: Locally tag for changes so push works later
|
|
command: >-
|
|
docker tag {{ zj_image.repository }}:{{ zj_image_tag }} {{ zj_image.repository }}:change_{{ zuul.change }}_{{ zj_image_tag }}
|
|
loop: "{{ zj_image.tags | default(['latest']) }}"
|
|
loop_control:
|
|
loop_var: zj_image_tag
|
|
when: zuul.change | default(false)
|
|
|
|
- name: Cleanup sibling source directory
|
|
include_tasks: clean-siblings.yaml
|