- name: Set up siblings include_tasks: siblings.yaml - name: Upload tag to dockerhub vars: promote_tag_prefix: "{{ ('change_' + zuul.change) if (zuul.change is defined) else zuul.pipeline }}_" # docker buildx doesn't have a separate push command, only the # ability to push at the end of a build. We run build here with # all the same arguments as in the buildx build tasks, so they # should result in a noop build and just a push. 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']) -%} --tag {{ docker_registry | ternary(docker_registry + '/', '') }}{{ zj_image.repository }}:{{ upload_docker_image_promote | ternary(promote_tag_prefix, '') }}{{ 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 }}" --platform={{ zj_image.arch | join(',') }} --push args: chdir: "{{ zuul_work_dir }}/{{ zj_image.context }}" environment: DOCKER_CLI_EXPERIMENTAL: enabled register: result until: result.rc == 0 retries: 3 delay: 30