diff options
author | Albin Vass <albin.vass@zenseact.com> | 2022-03-10 09:42:36 +0100 |
---|---|---|
committer | Albin Vass <albin.vass@zenseact.com> | 2022-04-12 21:08:51 +0200 |
commit | 9cf3b834bbb926ff7e96c8c6185c45edad15d3ae (patch) | |
tree | 6064f5bdcfdd6b466b3398026ace8c173ab0326c | |
parent | 3f594f0721cb74fed015fef9bd0da55db20661b1 (diff) | |
download | zuul-9cf3b834bbb926ff7e96c8c6185c45edad15d3ae.tar.gz |
Allow using 'unique' workspace scheme in jobs
Change-Id: Ie3c00f1afc368b2a86fc80554324c37fea9f07e9
-rw-r--r-- | doc/source/config/job.rst | 12 | ||||
-rw-r--r-- | tests/unit/test_merger_repo.py | 8 | ||||
-rw-r--r-- | zuul/configloader.py | 2 | ||||
-rw-r--r-- | zuul/model.py | 2 |
4 files changed, 21 insertions, 3 deletions
diff --git a/doc/source/config/job.rst b/doc/source/config/job.rst index 326487aa2..aaf4ff079 100644 --- a/doc/source/config/job.rst +++ b/doc/source/config/job.rst @@ -939,3 +939,15 @@ Here is an example of two job definitions: Note, however, that this scheme may produce collisions with `component` and `component/component`. + + .. value:: unique + + This writes the repository into a directory based on the + organization name and the ``urllib.parse.quote_plus`` formatted + project name. For example:: + + src/example.com/organization/organization%2Fproject + + + This scheme will produce unique workspace paths for every repository + and won't cause collisions. diff --git a/tests/unit/test_merger_repo.py b/tests/unit/test_merger_repo.py index 3eb208741..5cf308951 100644 --- a/tests/unit/test_merger_repo.py +++ b/tests/unit/test_merger_repo.py @@ -1133,7 +1133,13 @@ class TestMergerSchemes(ZuulTestCase): os.path.join(root, 'project1'))) def test_unique_scheme(self): - merger = self._getMerger(scheme=zuul.model.SCHEME_UNIQUE) + cache_merger = self._getMerger(work_root=self.cache_root) + cache_merger.updateRepo('gerrit', 'org/project1') + self._assertScheme(self.cache_root, 'unique') + + merger = self._getMerger( + cache_root=self.cache_root, + scheme=zuul.model.SCHEME_UNIQUE) merger.getRepo('gerrit', 'org/project1') self._assertScheme(self.work_root, 'unique') diff --git a/zuul/configloader.py b/zuul/configloader.py index 29e7a2ede..591b848fe 100644 --- a/zuul/configloader.py +++ b/zuul/configloader.py @@ -632,7 +632,7 @@ class JobParser(object): 'variant-description': str, 'post-review': bool, 'match-on-config-updates': bool, - 'workspace-scheme': vs.Any('golang', 'flat'), + 'workspace-scheme': vs.Any('golang', 'flat', 'unique'), } job_name = {vs.Required('name'): str} diff --git a/zuul/model.py b/zuul/model.py index 0bd5cb88b..b35e544ea 100644 --- a/zuul/model.py +++ b/zuul/model.py @@ -106,7 +106,7 @@ NODE_STATES = set([STATE_BUILDING, # Workspace scheme SCHEME_GOLANG = 'golang' SCHEME_FLAT = 'flat' -SCHEME_UNIQUE = 'unique' # Internal use only +SCHEME_UNIQUE = 'unique' def add_debug_line(debug_messages, msg, indent=0): |