blob: bce358c86a1c57d4537f9861c89315d1547fa60c [file] [log] [blame]
- name: Prepare project
debug:
msg: "{{ project.name }} {{ project_dest }}"
- name: Check if zuul.branch exists in repo
set_fact:
# If zuul checked out the branch we're testing (ie, gerrit's
# branch), then it exists.
project_branch_exists: "{{ zuul.projects[gerrit_project_name].checkout == project.checkout }}"
- name: Check if repo has a dependent change
set_fact:
repo_has_dependent_change: "{{ zuul['items'] | selectattr('project.canonical_name', 'eq', project.canonical_name) | list | length | bool }}"
- name: Check for unsatisfiable source repo condition
when:
- "project.canonical_name != zuul.project.canonical_name"
- "not project_branch_exists"
- "repo_has_dependent_change"
fail:
msg: >-
The repository {{ project.name }} does not contain the branch
under test ({{ zuul.projects[gerrit_project_name].checkout }}),
but this change depends on a change to that project and branch.
While Zuul is able to check out the repos in the requested
state, the branch mismatch means that Gerrit's submodule
subscription would not automatically update the submodule
pointer, and the merged state would not reflect the tested
state.
This configuration would be testable by creating a {{
zuul.projects[gerrit_project_name].checkout }} branch in the {{
project.name }} repo. Alternatively, you can merge the
dependent change, manually update the submodule pointer, then
test this change again.
# If there is no matching branch we need to check out the actual sha
# defined in the parent repo.
- name: Update submodule
when: "not project_branch_exists"
command: "git submodule update --init {{ project.name }}"
args:
chdir: "{{ gerrit_root }}"
- name: Move repo into place
when: "project_branch_exists"
command: "mv -T -f {{ ansible_user_dir }}/{{ project.src_dir }} {{ gerrit_root }}/{{ project_dest }}"