From 4d17d13edd00397bf859524f44257e31aa82ba3d Mon Sep 17 00:00:00 2001 From: Jeremy Stanley Date: Thu, 16 Apr 2015 17:05:04 +0000 Subject: [PATCH] Add an index.html for docs.o.o/infra This is a partial cargo-culting of the index job and associated files from the specs.o.o site, to generate a simple top-level index page for the http://docs.openstack.org/infra/ tree. Change-Id: Idb5a8dba58a53c7c8ea1de69e9a4d9b5ef410c78 --- docs-site/generate_infra_index.py | 63 +++++++++++++ docs-site/infra-documents.yaml | 19 ++++ docs-site/infra-index.html.tmpl | 130 +++++++++++++++++++++++++++ jenkins/jobs/infra-publish-jobs.yaml | 33 +++++++ tox.ini | 5 ++ zuul/layout.yaml | 7 ++ 6 files changed, 257 insertions(+) create mode 100755 docs-site/generate_infra_index.py create mode 100644 docs-site/infra-documents.yaml create mode 100644 docs-site/infra-index.html.tmpl diff --git a/docs-site/generate_infra_index.py b/docs-site/generate_infra_index.py new file mode 100755 index 0000000000..07e1b51003 --- /dev/null +++ b/docs-site/generate_infra_index.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Read the infra-documents.yaml file and generate the index.html file. +""" + +from __future__ import print_function + +import argparse +import os + +import jinja2 +import yaml + + +def render_template(template_filename, output_filename, template_context): + with open(template_filename, 'r') as f: + template = jinja2.Template(f.read()) + print('Writing %r' % output_filename) + with open(output_filename, 'w') as f: + f.write(template.render(**template_context)) + + +parser = argparse.ArgumentParser() +parser.add_argument('-v', '--verbose', + dest='verbose', + default=False, + action='store_true', + ) +parser.add_argument( + 'infile', + help='Path to infra-documents.yaml', +) +args = parser.parse_args() + +print('Reading documents data from %r' % args.infile) +infile = yaml.load(open(args.infile, 'r')) +template_path = os.path.dirname(args.infile) + +template_context = { + 'documents': infile['documents'], + 'all': infile['documents'] +} + +outdir = os.path.join(template_path, 'output') +if not os.path.exists(outdir): + os.makedirs(outdir) + + +for template_name, filename in [('infra-index.html.tmpl', 'index.html')]: + render_template(os.path.join(template_path, template_name), + os.path.join(outdir, filename), + template_context) diff --git a/docs-site/infra-documents.yaml b/docs-site/infra-documents.yaml new file mode 100644 index 0000000000..f80026c4d5 --- /dev/null +++ b/docs-site/infra-documents.yaml @@ -0,0 +1,19 @@ +documents: + - name: Infrastructure Manual + directory: manual + - name: Jenkins Job Builder + directory: jenkins-job-builder + - name: Nodepool + directory: nodepool + - name: OpenStackID + directory: openstackid + - name: Shade + directory: shade + - name: Slide Presentations + directory: publications + - name: Storyboard + directory: storyboard + - name: System Configuration + directory: system-config + - name: Zuul + directory: zuul diff --git a/docs-site/infra-index.html.tmpl b/docs-site/infra-index.html.tmpl new file mode 100644 index 0000000000..56b181c1f8 --- /dev/null +++ b/docs-site/infra-index.html.tmpl @@ -0,0 +1,130 @@ + + + + + + OpenStack Specifications + + + + + + + + + + + + + + + + + +
+ + +
+
+

+ OpenStack Developer and Community Infrastructure Documentation +

+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + + + diff --git a/jenkins/jobs/infra-publish-jobs.yaml b/jenkins/jobs/infra-publish-jobs.yaml index 4471f7117f..af169b4460 100644 --- a/jenkins/jobs/infra-publish-jobs.yaml +++ b/jenkins/jobs/infra-publish-jobs.yaml @@ -16,6 +16,39 @@ remove-prefix: 'doc/build/html' excludes: '' +- job: + name: publish-infra-docs-index + description: Render and publish the infra docs index. + node: bare-trusty + + builders: + - revoke-sudo + - gerrit-git-prep + - tox: + envlist: infra-docs + + publishers: + - ftp: + site: docs.openstack.org + source: 'docs-site/index.html' + target: '/infra/' + remove-prefix: 'docs-site/' + - console-log + +- job: + name: check-infra-docs-index + description: Render the infra docs index without publishing it. + node: bare-trusty + + builders: + - revoke-sudo + - gerrit-git-prep + - tox: + envlist: infra-docs + + publishers: + - console-log + - job-group: name: infra-publish-jobs jobs: diff --git a/tox.ini b/tox.ini index 6b6d1bc3aa..7c96cbd030 100644 --- a/tox.ini +++ b/tox.ini @@ -66,6 +66,11 @@ commands = [testenv:bashate] commands = {toxinidir}/tools/run-bashate.sh +[testenv:infra-docs] +deps = + Jinja2 + PyYAML +commands = {toxinidir}/docs-site/generate_infra_index.py {toxinidir}/docs-site/infra-documents.yaml [testenv:specs] deps = Jinja2 diff --git a/zuul/layout.yaml b/zuul/layout.yaml index 578b9ca653..af07e59d74 100755 --- a/zuul/layout.yaml +++ b/zuul/layout.yaml @@ -729,6 +729,10 @@ jobs: files: - 'accessbot/channels.yaml' - 'gerritbot/channels.yaml' + - name: ^(check-infra-docs-index|publish-infra-docs-index)$ + files: + - 'docs-site/.*' + - 'tox.ini' - name: ^(check-generate-specs-site|publish-specs-site)$ files: - 'specs/.*' @@ -3723,6 +3727,7 @@ projects: - gate-project-config-irc-access - gate-project-config-jenkins-project - gate-project-config-projects-yaml + - check-infra-docs-index - check-generate-specs-site gate: - gate-project-config-layout @@ -3730,8 +3735,10 @@ projects: - gate-project-config-irc-access - gate-project-config-jenkins-project - gate-project-config-projects-yaml + - check-infra-docs-index - check-generate-specs-site post: + - publish-infra-docs-index - publish-specs-site periodic: - propose-project-config-update