Test Use item.checkout from zuul.projects when mirroring

This creates a test role for change https://review.openstack.org/540934
that we can use in base-test.

Change-Id: I23b468b9440c6a4ec7e4c34f351b1934e0f63be0
This commit is contained in:
James E. Blair 2018-02-05 09:31:45 -08:00
parent 2943ce05c9
commit c185af7449
2 changed files with 41 additions and 0 deletions

View File

@ -0,0 +1,6 @@
Mirror the local git repos to remote nodes
This role uses git operations (unlike :zuul:role:`prepare-workspace`
which uses rsync) to mirror the local prepared git repos to the remote
nodes. This may be useful if the remote node already has a copy of
some or all of the git repos.

View File

@ -0,0 +1,35 @@
- name: Allow pushing to non-bare repo
git_config:
name: receive.denyCurrentBranch ignore
value: ignore
scope: local
repo: "{{ ansible_user_dir }}/{{ item.value.src_dir}}"
with_dict: "{{ zuul.projects }}"
- name: Synchronize src repos to workspace directory
command: "git push --mirror git+ssh://{{ ansible_user }}@{{ ansible_host }}/{{ ansible_user_dir }}/{{ item.value.src_dir}}"
args:
chdir: "{{ zuul.executor.work_root }}/{{ item.value.src_dir }}"
with_dict: "{{ zuul.projects }}"
delegate_to: localhost
# ANSIBLE0006: Skip linting since it triggers on the "git" command,
# but push is not supported by ansible git module.
tags:
- skip_ansible_lint
# Do this as a multi-line shell so that we can do the loop once
- name: Update remote repository state correctly
shell: |
# Reset is needed because we pushed to a non-bare repo
git reset --hard
# Undo the config setting we did above
git config --local --unset receive.denyCurrentBranch
# checkout the branch matching the branch set up by the executor
git checkout {{ item.checkout }}
args:
chdir: "{{ ansible_user_dir }}/{{ item.value.src_dir }}"
with_dict: "{{ zuul.projects }}"
# ANSIBLE0006: Skip linting since it triggers on the "git" command,
# but we prefer the shell above
tags:
- skip_ansible_lint