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:: fetch-zuul-cloner
|
||||||
.. zuul:autorole:: test-mirror-workspace-git-repos
|
.. zuul:autorole:: test-mirror-workspace-git-repos
|
||||||
.. zuul:autorole:: test-upload-logs-swift
|
.. 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