Merge "Add role git-prepare-nodecache"

This commit is contained in:
Zuul 2018-11-19 19:57:10 +00:00 committed by Gerrit Code Review
commit 6ac6c21e3b
3 changed files with 58 additions and 0 deletions

View File

@ -0,0 +1,15 @@
Prepare an archive containing all repositories that are part of the job. This
can be used to prepare the repos archive suitable for caching in the node
image to be used by `prepare-workspace-git`.
The path to the resulting archive file will be stored in the `git_cache_file`
variable. That variable can be used to push the archive to a place where
it will be picked up to be baked into the node image.
**Role variables**
.. zuul:rolevar:: git_cache_root
:default: {{ansible_user_dir }}/git-cache"
Directory where the git cache should be prepared. Usually this should not
be changed.

View File

@ -0,0 +1 @@
git_cache_root: "{{ansible_user_dir }}/git-cache"

View File

@ -0,0 +1,42 @@
- name: Create git parent dirs
file:
path: "{{ git_cache_root }}/{{ item.canonical_name | dirname }}"
state: directory
with_items: "{{ zuul.projects.values() | list }}"
- name: Copy git repos to {{ git_cache_root }}
command: cp -r "{{ ansible_user_dir }}/{{ item.src_dir }}/.git"
"{{ git_cache_root }}/{{ item.canonical_name }}"
with_items: "{{ zuul.projects.values() | list }}"
- name: Mark repos as bare
command: git config --bool core.bare true
args:
chdir: "{{ git_cache_root }}/{{ item.canonical_name }}"
with_items: "{{ zuul.projects.values() | list }}"
# We don't want git module foo, just set a config value.
tags:
- skip_ansible_lint
- name: Run git garbage collection
command: git gc
args:
chdir: "{{ git_cache_root }}/{{ item.canonical_name }}"
with_items: "{{ zuul.projects.values() | list }}"
# The ansible git module doesn't support garbage collection.
tags:
- skip_ansible_lint
- name: Set git_cache_file variable
set_fact:
git_cache_file: "{{ git_cache_root }}/repos.tar.gz"
- name: Create repos tarball
shell: |
tar -czf "{{ git_cache_file }}" *
args:
chdir: "{{ git_cache_root }}"
# Ansible lint wants we should use the unarchive module but we want the other
# way round.
tags:
- skip_ansible_lint