CI: Add docs build and deploy workflow (#7448)
* Add docs build and deploy workflow * Remove old travis docs workflow * update to cli command * Tidy up for review * formatting * Update to pass style checks * Update lib/python/qmk/cli/docs.py Co-Authored-By: skullydazed <skullydazed@users.noreply.github.com> * Review comments - build->generate, use of verbose * Add docs * Update to match recent actions * Run within base_container * Convert cli to generate-docs * Convert cli to generate-docs - restore old file * Convert cli to generate-docs * Update docs Co-authored-by: skullydazed <skullydazed@users.noreply.github.com>
This commit is contained in:
parent
abf1902ff5
commit
aae3b35c0f
6 changed files with 91 additions and 20 deletions
43
.github/workflows/docs.yml
vendored
Normal file
43
.github/workflows/docs.yml
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
name: Generate Docs
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- 'tmk_core/**'
|
||||||
|
- 'quantum/**'
|
||||||
|
- 'platforms/**'
|
||||||
|
- 'docs/**'
|
||||||
|
- '.github/workflows/docs.yml'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: qmkfm/base_container
|
||||||
|
|
||||||
|
# protect against those who develop with their fork on master
|
||||||
|
if: github.repository == 'qmk/qmk_firmware'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
apt-get update && apt-get install -y rsync nodejs npm doxygen
|
||||||
|
npm install -g moxygen
|
||||||
|
|
||||||
|
- name: Build docs
|
||||||
|
run: |
|
||||||
|
qmk --verbose generate-docs
|
||||||
|
|
||||||
|
- name: Deploy
|
||||||
|
uses: JamesIves/github-pages-deploy-action@3.7.1
|
||||||
|
with:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
BASE_BRANCH: master
|
||||||
|
BRANCH: gh-pages
|
||||||
|
FOLDER: .build/docs
|
||||||
|
GIT_CONFIG_EMAIL: hello@qmk.fm
|
|
@ -18,21 +18,16 @@ addons:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-trusty-7
|
- llvm-toolchain-trusty-7
|
||||||
packages:
|
packages:
|
||||||
- pandoc
|
|
||||||
- diffutils
|
- diffutils
|
||||||
- dos2unix
|
- dos2unix
|
||||||
- doxygen
|
|
||||||
- clang-format-7
|
- clang-format-7
|
||||||
- libstdc++-7-dev
|
- libstdc++-7-dev
|
||||||
install:
|
|
||||||
- npm install -g moxygen
|
|
||||||
script:
|
script:
|
||||||
- git fetch --depth=50 origin $TRAVIS_BRANCH:$TRAVIS_BRANCH
|
- git fetch --depth=50 origin $TRAVIS_BRANCH:$TRAVIS_BRANCH
|
||||||
- git rev-parse --short HEAD
|
- git rev-parse --short HEAD
|
||||||
- git diff --name-only HEAD $TRAVIS_BRANCH
|
- git diff --name-only HEAD $TRAVIS_BRANCH
|
||||||
- bash util/travis_test.sh
|
- bash util/travis_test.sh
|
||||||
- bash util/travis_build.sh
|
- bash util/travis_build.sh
|
||||||
- bash util/travis_docs.sh
|
|
||||||
after_script:
|
after_script:
|
||||||
bash util/travis_compiled_push.sh
|
bash util/travis_compiled_push.sh
|
||||||
notifications:
|
notifications:
|
||||||
|
|
|
@ -286,6 +286,16 @@ This command starts a local HTTP server which you can use for browsing or improv
|
||||||
qmk docs [-p PORT]
|
qmk docs [-p PORT]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## `qmk generate-docs`
|
||||||
|
|
||||||
|
This command allows you to generate QMK documentation locally. It can be uses for general browsing or improving the docs. External tools such as [serve](https://www.npmjs.com/package/serve) can be used to browse the generated files.
|
||||||
|
|
||||||
|
**Usage**:
|
||||||
|
|
||||||
|
```
|
||||||
|
qmk generate-docs
|
||||||
|
```
|
||||||
|
|
||||||
## `qmk kle2json`
|
## `qmk kle2json`
|
||||||
|
|
||||||
This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite `info.json` if it is already present. Use the `-f` or `--force` flag to overwrite.
|
This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite `info.json` if it is already present. Use the `-f` or `--force` flag to overwrite.
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
from . import api
|
from . import api
|
||||||
|
from . import docs
|
||||||
|
|
37
lib/python/qmk/cli/generate/docs.py
Normal file
37
lib/python/qmk/cli/generate/docs.py
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
"""Build QMK documentation locally
|
||||||
|
"""
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from milc import cli
|
||||||
|
|
||||||
|
DOCS_PATH = Path('docs/')
|
||||||
|
BUILD_PATH = Path('.build/docs/')
|
||||||
|
|
||||||
|
|
||||||
|
@cli.subcommand('Build QMK documentation.', hidden=False if cli.config.user.developer else True)
|
||||||
|
def generate_docs(cli):
|
||||||
|
"""Invoke the docs generation process
|
||||||
|
|
||||||
|
TODO(unclaimed):
|
||||||
|
* [ ] Add a real build step... something static docs
|
||||||
|
"""
|
||||||
|
|
||||||
|
if BUILD_PATH.exists():
|
||||||
|
shutil.rmtree(BUILD_PATH)
|
||||||
|
|
||||||
|
shutil.copytree(DOCS_PATH, BUILD_PATH)
|
||||||
|
|
||||||
|
# When not verbose we want to hide all output
|
||||||
|
args = {'check': True}
|
||||||
|
if not cli.args.verbose:
|
||||||
|
args.update({'stdout': subprocess.DEVNULL, 'stderr': subprocess.STDOUT})
|
||||||
|
|
||||||
|
cli.log.info('Generating internal docs...')
|
||||||
|
|
||||||
|
# Generate internal docs
|
||||||
|
subprocess.run(['doxygen', 'Doxyfile'], **args)
|
||||||
|
subprocess.run(['moxygen', '-q', '-a', '-g', '-o', BUILD_PATH / 'internals_%s.md', 'doxygen/xml'], **args)
|
||||||
|
|
||||||
|
cli.log.info('Successfully generated internal docs to %s.', BUILD_PATH)
|
|
@ -1,15 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
source util/travis_utils.sh
|
|
||||||
source util/travis_push.sh
|
|
||||||
|
|
||||||
if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip docs]"* ]] ; then
|
|
||||||
if git diff --name-only ${TRAVIS_COMMIT_RANGE} | grep -e '^quantum/' -e '^tmk_core/' -e '^docs/internals_.*'; then
|
|
||||||
echo "Generating internal docs..."
|
|
||||||
rm -rf doxygen
|
|
||||||
doxygen Doxyfile
|
|
||||||
moxygen -q -a -g -o docs/internals_%s.md doxygen/xml
|
|
||||||
git add docs/internals_*
|
|
||||||
git commit -m'autogenerated internal docs for ${TRAVIS_COMMIT_RANGE}' || true
|
|
||||||
fi
|
|
||||||
fi
|
|
Loading…
Reference in a new issue