Make test-prepare-workspace-git role
This is a copy of prepare-workspace-git except that it imports test-mirror-workspace-git-repos. This is for base job testing. Change-Id: I4ef3e4376c9e958761c165836c4fb546157e237a
This commit is contained in:
parent
423a7d6044
commit
0c980bbcb7
@ -4,3 +4,4 @@ Deprecated and Test Roles
|
||||
.. zuul:autorole:: fetch-zuul-cloner
|
||||
.. zuul:autorole:: test-mirror-workspace-git-repos
|
||||
.. zuul:autorole:: test-upload-logs-swift
|
||||
.. zuul:autorole:: test-prepare-workspace-git
|
||||
|
17
roles/test-prepare-workspace-git/README.rst
Normal file
17
roles/test-prepare-workspace-git/README.rst
Normal file
@ -0,0 +1,17 @@
|
||||
Mirror the local git repos to remote nodes
|
||||
|
||||
This role uses git operations (unlike :zuul:role:`prepare-workspace`
|
||||
which uses rsync) to mirror the locally prepared git repos to the remote
|
||||
nodes while taking advantage of cached repos on the node if they exist.
|
||||
This role works generically regardless of the existence of a cached
|
||||
repo on the node.
|
||||
|
||||
The cached repos need to be placed using the canonical name under the
|
||||
`cached_repos_root` directory.
|
||||
|
||||
**Role Variables**
|
||||
|
||||
.. zuul:rolevar:: cached_repos_root
|
||||
:default: /opt/git
|
||||
|
||||
The root of the cached repos.
|
1
roles/test-prepare-workspace-git/defaults/main.yaml
Normal file
1
roles/test-prepare-workspace-git/defaults/main.yaml
Normal file
@ -0,0 +1 @@
|
||||
cached_repos_root: /opt/git
|
64
roles/test-prepare-workspace-git/tasks/main.yaml
Normal file
64
roles/test-prepare-workspace-git/tasks/main.yaml
Normal file
@ -0,0 +1,64 @@
|
||||
- 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
|
||||
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 }}
|
||||
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 }}"
|
||||
with_items: "{{ zuul.projects.values() | list }}"
|
||||
loop_control:
|
||||
loop_var: zj_project
|
||||
# ANSIBLE0006: git remote is not supported by ansible module
|
||||
tags:
|
||||
- skip_ansible_lint
|
||||
|
||||
# TODO(tobiash): we might want to deprecate the role mirror-workspace-git-repos
|
||||
# and move it here.
|
||||
- name: Synchronize repos
|
||||
import_role:
|
||||
name: test-mirror-workspace-git-repos
|
Loading…
Reference in New Issue
Block a user