From 73fe104252372b860cd2683d6b1d8101fe68bd44 Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Thu, 21 Sep 2017 12:04:28 -0500 Subject: [PATCH] Migrate docs-draft jobs to emit to logs/html Instead of publishing to docs-draft, we're just going to pull the results into the log dir and set the success-url. Change-Id: Ibb7cfa82b9e01233fb9062ed5d5dddde0b8f5fcc --- zuul/cmd/migrate.py | 65 ++++++++++++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/zuul/cmd/migrate.py b/zuul/cmd/migrate.py index abbc1ab321..0a38d1f970 100644 --- a/zuul/cmd/migrate.py +++ b/zuul/cmd/migrate.py @@ -485,6 +485,39 @@ class Job: return rsync_opts def _makeSCPTask(self, publisher): + # NOTE(mordred) About docs-draft manipulation: + # The target of html/ was chosen to put the node contents into the + # html dir inside of logs such that if the node's contents have an + # index.html in them setting the success-url to html/ will render + # things as expected. Existing builder macros look like: + # + # - publisher: + # name: upload-sphinx-draft + # publishers: + # - scp: + # site: 'static.openstack.org' + # files: + # - target: 'docs-draft/$LOG_PATH' + # source: 'doc/build/html/**' + # keep-hierarchy: true + # copy-after-failure: true + # + # Which is pulling the tree of the remote html directory starting with + # doc/build/html and putting that whole thing into + # docs-draft/$LOG_PATH. + # + # Then there is a success-pattern in layout.yaml that looks like: + # + # http://{url}/{log_path}/doc/build/html/ + # + # Which gets reports. There are many variations on that URL. So rather + # than needing to figure out varying success-urls to report in v3, + # we'll remote the ** and not process this through the rsync_opts + # processing we use for the other publishers, but instead will just + # pass doc/build/html/ to get the contents of doc/build/html/ and we'll + # put those in {{ log_root }}/html/ locally meaning the success-url + # can always be html/. This should work for all values of source + # from v2. tasks = [] artifacts = False draft = False @@ -499,6 +532,7 @@ class Job: if scpfile.get('copy-console'): continue else: + src = "{{ ansible_user_dir }}" rsync_opts = self._getRsyncOptions(scpfile['source']) target = scpfile['target'] @@ -512,14 +546,10 @@ class Job: name=self.name, f=f)) continue if target.startswith('docs-draft'): - target = target.replace( - 'docs-draft/$LOG_PATH', - "{{ zuul.executor.work_root }}/docs-draft") + target = "{{ zuul.executor.log_root }}/html/" + src = scpfile['source'].replace('**', '') + rsync_opts = None draft = True - else: - target = target.replace( - 'logs/$LOG_PATH', - "{{ zuul.executor.work_root }}/logs") elif site == 'tarballs.openstack.org': if not target.startswith('tarballs'): self.log.error( @@ -536,18 +566,17 @@ class Job: self.log.error('Job {name} uses yaml2ical publisher') continue - syncargs = collections.OrderedDict( - src="{{ ansible_user_dir }}", - dest=target, - copy_links='yes', - verify_host=True, - mode='pull') + syncargs = collections.OrderedDict() + syncargs['src'] = src + syncargs['dest'] = target + syncargs['copy_links'] = 'yes' + syncargs['mode'] = 'pull' + syncargs['verify_host'] = True if rsync_opts: syncargs['rsync_opts'] = rsync_opts - task = collections.OrderedDict( - name='copy files from node', - synchronize=syncargs, - no_log=True) + task = collections.OrderedDict() + task['name'] = 'copy files from {src} on node to'.format(src=src) + task['synchronize'] = syncargs # We don't use retry_args here because there is a bug in # the synchronize module that breaks subsequent attempts at # retrying. Better to try once and get an accurate error @@ -719,7 +748,7 @@ class Job: if has_artifacts: output['parent'] = 'publish-openstack-artifacts' elif has_draft: - output['parent'] = 'publish-docs-draft' + output['success-url'] = 'html/' output['run'] = os.path.join(self.job_path, 'run.yaml') if has_post: output['post-run'] = os.path.join(self.job_path, 'post.yaml')