# This can be removed if we add this functionality to Zuul directly - name: Load information from zuul_return when: buildset_registry is not defined set_fact: buildset_registry: "{{ (lookup('file', zuul.executor.work_root + '/results.json') | from_json)['buildset_registry'] }}" ignore_errors: true - name: Build a docker image command: >- docker build {{ item.path | default('.') }} -f {{ item.dockerfile | default(docker_dockerfile) }} {% if item.target | default(false) -%} --target {{ item.target }} {% endif -%} {% for build_arg in item.build_args | default([]) -%} --build-arg {{ build_arg }} {% endfor -%} {% for tag in item.tags | default(['latest']) -%} --tag {{ item.repository }}:change_{{ zuul.change }}_{{ tag }} --tag {{ item.repository }}:{{ tag }} {% endfor -%} args: chdir: "{{ zuul_work_dir }}/{{ item.context }}" loop: "{{ docker_images }}" # Docker doesn't understand docker push [1234:5678::]:5000/image/path:tag # so we set up /etc/hosts with a registry alias name to support ipv6 and 4. - name: Configure /etc/hosts for buildset_registry to workaround docker not understanding ipv6 addresses become: yes lineinfile: path: /etc/hosts state: present regex: "^{{ buildset_registry.host }}\tzuul-jobs.buildset-registry$" line: "{{ buildset_registry.host }}\tzuul-jobs.buildset-registry" insertafter: EOF when: buildset_registry is defined and buildset_registry.host | ipaddr - name: Set buildset_registry alias variable when using ip set_fact: buildset_registry_alias: zuul-jobs.buildset-registry when: buildset_registry is defined and buildset_registry.host | ipaddr - name: Set buildset_registry alias variable when using name set_fact: buildset_registry_alias: "{{ buildset_registry.host }}" when: buildset_registry is defined and not ( buildset_registry.host | ipaddr ) # Push each image. - name: Push image to buildset registry when: buildset_registry is defined include_tasks: push.yaml loop: "{{ docker_images }}" loop_control: loop_var: image