Documentation versioning (#3357)

* initial version of docs versioning

* updated license header

* fix linter issue
main
Andrey Zhavoronkov 5 years ago committed by GitHub
parent e76b0ea5fc
commit 0974484b71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -25,14 +25,19 @@ jobs:
with: with:
node-version: '14.x' node-version: '14.x'
- name: Build docs - name: Install npm packages
working-directory: ./site working-directory: ./site
run: | run: |
npm ci npm ci
hugo --minify
- name: Build docs
run: |
pip install gitpython packaging
python site/build_docs.py
- name: Deploy - name: Deploy
uses: peaceiris/actions-gh-pages@v3 uses: peaceiris/actions-gh-pages@v3
with: with:
github_token: ${{ secrets.GITHUB_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./site/public publish_dir: ./public
force_orphan: true force_orphan: true

@ -0,0 +1,68 @@
# Copyright (C) 2021 Intel Corporation
#
# SPDX-License-Identifier: MIT
import os
from packaging import version
import subprocess
import git
MINIMUM_VERSION='1.5.0'
def prepare_tags(repo):
tags = {}
for tag in repo.tags:
tag_version = version.parse(tag.name)
if tag_version >= version.Version(MINIMUM_VERSION) and not tag_version.is_prerelease:
release_version = (tag_version.major, tag_version.minor)
if not release_version in tags or tag_version > version.parse(tags[release_version].name):
tags[release_version] = tag
return tags.values()
def generate_versioning_config(filename, versions, url_prefix=''):
def write_version_item(file_object, version, url):
file_object.write('[[params.versions]]\n')
file_object.write('version = "{}"\n'.format(version))
file_object.write('url = "{}"\n\n'.format(url))
with open(filename, 'w') as f:
write_version_item(f, 'develop', '{}/'.format(url_prefix))
for v in versions:
write_version_item(f, v, '{}/{}'.format(url_prefix, v))
def generate_docs(repo, output_dir, tags):
def run_hugo(content_loc, destination_dir):
subprocess.run([ # nosec
'hugo',
'--destination',
destination_dir,
'--config',
'config.toml,versioning.toml',
],
cwd=content_loc,
)
cwd = repo.working_tree_dir
content_loc = os.path.join(cwd, 'site')
if not os.path.exists(output_dir):
os.makedirs(output_dir)
generate_versioning_config(os.path.join(cwd, 'site', 'versioning.toml'), (t.name for t in tags))
run_hugo(content_loc, output_dir)
generate_versioning_config(os.path.join(cwd, 'site', 'versioning.toml'), (t.name for t in tags), '/..')
for tag in tags:
repo.git.checkout(tag.name)
destination_dir = os.path.join(output_dir, tag.name)
os.makedirs(destination_dir)
run_hugo(content_loc, destination_dir)
if __name__ == "__main__":
repo_root = os.getcwd()
repo = git.Repo(repo_root)
output_dir = os.path.join(repo_root, 'public')
tags = prepare_tags(repo)
generate_docs(repo, output_dir, tags)
Loading…
Cancel
Save