80f5a7eeb4
Zuul has transitioned zuul.projects to a dict that mirrors zuul._projects. Convert users back to zuul.projects so we can remove the underscore version in zuul. Change-Id: I1408a15d4da274f3fc911f03d5572f4818bc4ebb Depends-On: I3c011f72933e98ccbf8badf0e9197c8659766c51
54 lines
2.0 KiB
YAML
54 lines
2.0 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 }}/{{ 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
|
|
|
|
- name: Determine local HEAD of projects
|
|
# Output yaml-valid dict data for projects and their current HEAD
|
|
shell: "echo '{{ item.key }}:' $(git status | head -1 |awk '{ print $NF }')"
|
|
args:
|
|
chdir: "{{ zuul.executor.work_root }}/{{ item.value.src_dir }}"
|
|
with_dict: "{{ zuul.projects }}"
|
|
delegate_to: localhost
|
|
register: project_heads_yaml
|
|
# ANSIBLE0006: Skip linting since it triggers on the "git" command,
|
|
# but status is not supported by ansible git module.
|
|
tags:
|
|
- skip_ansible_lint
|
|
|
|
- name: Build dict to map project and current head HEAD
|
|
set_fact:
|
|
project_heads: "{{ project_heads|default({}) | combine( item.stdout | from_yaml ) }}"
|
|
with_items: '{{ project_heads_yaml.results }}'
|
|
|
|
# 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 {{ project_heads[item.key] }}
|
|
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
|