d0e2016592
This adds a custom ansible-lint rule at .rules/ZuulJobsNamespaceLoopVar.py that enforces the loop var policy described at: https://zuul-ci.org/docs/zuul-jobs/policy.html#ansible-loops-in-roles It also updates existing roles to follow the policy. Change-Id: I92b2ff56a1c2702542fc07b316f1809087a4c92f
56 lines
1.8 KiB
YAML
56 lines
1.8 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 {{ zj_sibling }} {{ ansible_user_dir }}/{{ zuul_work_dir }}/{{ item.context }}/.zuul-siblings'
|
|
chdir: '~/src'
|
|
loop: '{{ item.siblings }}'
|
|
loop_control:
|
|
loop_var: zj_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']) -%}
|
|
{% if zuul.change | default(false) -%}
|
|
--tag {{ item.repository }}:change_{{ zuul.change }}_{{ tag }}
|
|
{% endif -%}
|
|
--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
|
|
|