Add test workspace setup role
This will allow us to test changes to this role which is used in base and base-test. Change-Id: I072eea647313aac5c5f1024db193b603ad91e010
This commit is contained in:
parent
836cc85eec
commit
43868ae828
6
roles/test-mirror-workspace-git-repos/README.rst
Normal file
6
roles/test-mirror-workspace-git-repos/README.rst
Normal 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.
|
42
roles/test-mirror-workspace-git-repos/tasks/main.yaml
Normal file
42
roles/test-mirror-workspace-git-repos/tasks/main.yaml
Normal file
@ -0,0 +1,42 @@
|
||||
- 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
|
||||
# We occasionally see git pushes in the middle of this loop fail then
|
||||
# subsequent pushes for other repos succeed. The entire loop ends up
|
||||
# failing because one of the pushes failed. Mitigate this by retrying
|
||||
# on failure.
|
||||
register: git_push
|
||||
until: git_push is success
|
||||
retries: 3
|
||||
# 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.value.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
|
Loading…
Reference in New Issue
Block a user