Skip to content

Commit

Permalink
Merge pull request #11 from dvkruchinin/dkru/gh-pages-origin
Browse files Browse the repository at this point in the history
GH pages
  • Loading branch information
dvkruchinin authored Aug 20, 2021
2 parents 935fb0e + 0b9f79e commit cd7d1d0
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 0 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/github_pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Github pages

on:
push:
branches:
- develop

jobs:
deploy:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0

- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.83.1'
extended: true

- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: '14.x'

- name: Install npm packages
working-directory: ./site
run: |
npm ci
- name: Build docs
run: |
pip install gitpython packaging
python site/build_docs.py
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
force_orphan: true
68 changes: 68 additions & 0 deletions site/build_docs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Copyright (C) 2021 Intel Corporation
#
# SPDX-License-Identifier: MIT

import os
import subprocess

from packaging import version
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, '--', 'site/content/en/docs')
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)

0 comments on commit cd7d1d0

Please sign in to comment.