Re-sync test-mirror-workspace-git-repos

This brings it in-line with mirror-workspace-git-repos in preparation
for further changes.

Change-Id: Ia7d07f84c5bf48dc11e195738edbce7acece8fee
This commit is contained in:
James E. Blair 2022-05-19 09:32:15 -07:00
parent 904ca53b86
commit 2cc836a320
3 changed files with 24 additions and 4 deletions

View File

@ -4,3 +4,11 @@ This role uses git operations (unlike :zuul:role:`prepare-workspace`
which uses rsync) to mirror the local prepared git repos to the remote 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 nodes. This may be useful if the remote node already has a copy of
some or all of the git repos. some or all of the git repos.
**Role Variables**
.. zuul:rolevar:: mirror_workspace_quiet
:default: false
If `true` git operations will be silenced and won't print every
changed reference.

View File

@ -0,0 +1 @@
mirror_workspace_quiet: false

View File

@ -9,10 +9,19 @@
loop_var: zj_project loop_var: zj_project
- name: Synchronize src repos to workspace directory - name: Synchronize src repos to workspace directory
command: "git push --mirror git+ssh://{{ ansible_user }}@{{ ansible_host | ipwrap }}:{{ ansible_port }}/{{ ansible_user_dir }}/{{ zj_project.value.src_dir }}" command: |-
{% if ansible_connection == "kubectl" %}
git push {% if mirror_workspace_quiet %}--quiet{% endif %} --mirror "ext::kubectl --context {{ zuul.resources[inventory_hostname].context }} -n {{ zuul.resources[inventory_hostname].namespace }} exec -i {{ zuul.resources[inventory_hostname].pod }} -- %S {{ ansible_user_dir }}/{{ zj_project.value.src_dir }}"
{% else %}
git push {% if mirror_workspace_quiet %}--quiet{% endif %} --mirror git+ssh://{{ ansible_user }}@{{ ansible_host | ipwrap }}:{{ ansible_port }}/{{ ansible_user_dir }}/{{ zj_project.value.src_dir }}
{% endif %}
args: args:
chdir: "{{ zuul.executor.work_root }}/{{ zj_project.value.src_dir }}" chdir: "{{ zuul.executor.work_root }}/{{ zj_project.value.src_dir }}"
environment:
GIT_ALLOW_PROTOCOL: ext:ssh
with_dict: "{{ zuul.projects }}" with_dict: "{{ zuul.projects }}"
loop_control:
loop_var: zj_project
delegate_to: localhost delegate_to: localhost
# We occasionally see git pushes in the middle of this loop fail then # We occasionally see git pushes in the middle of this loop fail then
# subsequent pushes for other repos succeed. The entire loop ends up # subsequent pushes for other repos succeed. The entire loop ends up
@ -25,18 +34,20 @@
# but push is not supported by ansible git module. # but push is not supported by ansible git module.
tags: tags:
- skip_ansible_lint - skip_ansible_lint
loop_control:
loop_var: zj_project
# Do this as a multi-line shell so that we can do the loop once # Do this as a multi-line shell so that we can do the loop once
- name: Update remote repository state correctly - name: Update remote repository state correctly
shell: | shell: |
set -eu
# Reset is needed because we pushed to a non-bare repo # Reset is needed because we pushed to a non-bare repo
git reset --hard git reset --hard
# Clean is needed because we pushed to a non-bare repo
git clean -xdf
# Undo the config setting we did above # Undo the config setting we did above
git config --local --unset receive.denyCurrentBranch git config --local --unset receive.denyCurrentBranch
# checkout the branch matching the branch set up by the executor # checkout the branch matching the branch set up by the executor
git checkout {{ zj_project.value.checkout }} git checkout {% if mirror_workspace_quiet %}--quiet{% endif %} {{ zj_project.value.checkout }}
# put out a status line with the current HEAD # put out a status line with the current HEAD
echo "{{ zj_project.value.canonical_name }} checked out to:" echo "{{ zj_project.value.canonical_name }} checked out to:"
git log --pretty=oneline -1 git log --pretty=oneline -1