Merge "Reduce the number of loops in prepare-workspace-git"
This commit is contained in:
commit
c846c0044c
@ -1,59 +1,27 @@
|
||||
- name: Find locally cached git repos
|
||||
stat:
|
||||
path: "{{ cached_repos_root }}/{{ zj_project.canonical_name }}"
|
||||
with_items: "{{ zuul.projects.values() | list }}"
|
||||
loop_control:
|
||||
loop_var: zj_project
|
||||
register: cached_repos
|
||||
|
||||
# We do a bare clone here first so that we skip creating a working copy that
|
||||
# will be overwritten later anyway.
|
||||
- name: Clone cached repo to workspace
|
||||
# Do all the steps in a single shell script. This reduces the number of times
|
||||
# ansible must loop over the list of projects which reduces the amount of
|
||||
# task startup time we incur.
|
||||
- name: Set initial repo states in workspace
|
||||
shell: |
|
||||
set -e
|
||||
git clone --bare {{ cached_repos_root }}/{{ zj_project.0.canonical_name }} {{ ansible_user_dir }}/{{ zj_project.0.src_dir }}/.git
|
||||
cd {{ ansible_user_dir }}/{{ zj_project.0.src_dir }}
|
||||
set -ex
|
||||
if [ -d "{{ cached_repos_root }}/{{ zj_project.canonical_name }}" ] ; then
|
||||
# We do a bare clone here first so that we skip creating a working
|
||||
# copy that will be overwritten later anyway.
|
||||
git clone --bare {{ cached_repos_root }}/{{ zj_project.canonical_name }} {{ ansible_user_dir }}/{{ zj_project.src_dir }}/.git
|
||||
else
|
||||
git init {{ ansible_user_dir }}/{{ zj_project.src_dir }}
|
||||
fi
|
||||
cd {{ ansible_user_dir }}/{{ zj_project.src_dir }}
|
||||
git config --local --bool core.bare false
|
||||
args:
|
||||
creates: "{{ ansible_user_dir }}/{{ zj_project.0.src_dir }}"
|
||||
when: zj_project.1.stat.exists
|
||||
with_together:
|
||||
- "{{ zuul.projects.values() | list }}"
|
||||
- "{{ cached_repos.results }}"
|
||||
loop_control:
|
||||
loop_var: zj_project
|
||||
# ANSIBLE0006: If we use the git module, we get warning
|
||||
# ANSIBLE0004 since we do not give an explicit version
|
||||
tags:
|
||||
- skip_ansible_lint
|
||||
|
||||
- name: Initialize non-cached repos
|
||||
command: "git init {{ ansible_user_dir }}/{{ zj_project.0.src_dir }}"
|
||||
args:
|
||||
creates: "{{ ansible_user_dir }}/{{ zj_project.0.src_dir }}"
|
||||
when: not zj_project.1.stat.exists
|
||||
with_together:
|
||||
- "{{ zuul.projects.values() | list }}"
|
||||
- "{{ cached_repos.results }}"
|
||||
loop_control:
|
||||
loop_var: zj_project
|
||||
# ANSIBLE0006: If we use the git module, we get warning
|
||||
# ANSIBLE0004 since we do not give an explicit version
|
||||
tags:
|
||||
- skip_ansible_lint
|
||||
|
||||
- name: Remove origin from local git repos and replace it by the zuul fake origin
|
||||
# To be idempotent, remove origin only if it's found in the local list.
|
||||
shell: |
|
||||
set -e
|
||||
git remote -v | grep origin && git remote rm origin || true
|
||||
git remote add origin file:///dev/null
|
||||
args:
|
||||
chdir: "{{ ansible_user_dir }}/{{ zj_project.src_dir }}"
|
||||
creates: "{{ ansible_user_dir }}/{{ zj_project.src_dir }}"
|
||||
with_items: "{{ zuul.projects.values() | list }}"
|
||||
loop_control:
|
||||
loop_var: zj_project
|
||||
# ANSIBLE0006: git remote is not supported by ansible module
|
||||
# We're using git in a shell script because it is faster and the module
|
||||
# doesn't support features we need.
|
||||
tags:
|
||||
- skip_ansible_lint
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user