- name: Check sibling directory stat: path: '{{ zuul_work_dir }}/{{ item.context }}/.zuul-siblings' register: _dot_zuul_siblings # This should have been cleaned up; multiple builds may specify # different siblings to include so we need to start fresh. - name: Check for clean build assert: that: not _dot_zuul_siblings.stat.exists - name: Create sibling source directory file: path: '{{ zuul_work_dir }}/{{ item.context }}/.zuul-siblings' state: directory mode: 0755 when: item.siblings is defined # NOTE(ianw): could use recursive copy: with remote_src, but it's # Ansible 2.8 only. take the simple approach. - name: Copy sibling source directories command: cmd: 'cp --parents -r {{ sibling }} /home/zuul/{{ zuul_work_dir }}/{{ item.context }}/.zuul-siblings' chdir: '~/src' loop: '{{ item.siblings }}' loop_control: loop_var: sibling when: item.siblings is defined - 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 -%} {% if item.siblings | default(false) -%} --build-arg "ZUUL_SIBLINGS={{ item.siblings | join(' ') }}" {% endif -%} {% 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 }}" - name: Cleanup sibling source directory file: path: '{{ zuul_work_dir }}/.zuul-siblings' state: absent