91bef675d4
This expilicitly notes the HEAD of the checked out tree in the logs. Currently you'll see something like ... HEAD is now at 9dfb46a18 [wip] install ansible as editable during devel jobs ... Already on 'master' ... ok: Item: Runtime: 0:00:00.079626 for each project as this loop happens. However there's no explicit mention of the project name and you have to reverse engineer what menioned change relates to what project. Where this would be useful is when you have an external project dependency and suddenly your testing stops working due to a change in it. You can quickly compare the last good run with the failing HEAD mentioned here to help bisect the problem. Change-Id: I84d9a8a460e99d3bc558b3a7584d787b22f2ed33
46 lines
1.8 KiB
YAML
46 lines
1.8 KiB
YAML
- 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 | ipwrap }}:{{ ansible_port }}/{{ 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 }}
|
|
# put out a status line with the current HEAD
|
|
echo "{{ item.value.canonical_name }} checked out to:"
|
|
git log --pretty=oneline -1
|
|
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
|