599954715e
There are a number of issues with this. Firstly, it needs to copy the parent directories to make a heirarchy in the .zuul-siblings directory. The current "cp -r" was only copying the final directory. Switch into the source directory and use "--parent" to do this. Also, it should be copying into the context dir. Add the {{ item.context }} to the path where appropriate. Make new testing image that copies in files from the siblings. Because COPY will fail if the sources aren't there, this is like an assert that we copied it correctly. Change-Id: I9f3b0a1f71d20cf7511f224648dd2fa51a039015
54 lines
1.7 KiB
YAML
54 lines
1.7 KiB
YAML
- 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
|
|
|