From cf6fbd4d8e4bcf6cbd2acaf55614abe023d7c615 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Thu, 11 Jan 2024 17:46:03 +0100 Subject: [PATCH] Added new SphinxDocumentation workflow template. --- .github/workflows/SphinxDocumentation.yml | 122 ++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 .github/workflows/SphinxDocumentation.yml diff --git a/.github/workflows/SphinxDocumentation.yml b/.github/workflows/SphinxDocumentation.yml new file mode 100644 index 0000000..be9abbf --- /dev/null +++ b/.github/workflows/SphinxDocumentation.yml @@ -0,0 +1,122 @@ +# ==================================================================================================================== # +# Authors: # +# Patrick Lehmann # +# # +# ==================================================================================================================== # +# Copyright 2020-2024 The pyTooling Authors # +# # +# 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. # +# # +# SPDX-License-Identifier: Apache-2.0 # +# ==================================================================================================================== # +name: Documentation + +on: + workflow_call: + inputs: + python_version: + description: 'Python version.' + required: false + default: '3.12' + type: string + requirements: + description: 'Python dependencies to be installed through pip.' + required: false + default: '-r doc/requirements.txt' + type: string + doc_directory: + description: 'Path to the directory containing documentation (Sphinx working directory).' + required: false + default: 'doc' + type: string + html_artifact: + description: 'Name of the HTML documentation artifact.' + required: false + default: '' + type: string + latex_artifact: + description: 'Name of the LaTeX documentation artifact.' + required: false + default: '' + type: string + coverage_html_artifact: + description: 'Name of the HTML coverage artifact.' + required: false + default: '' + type: string + +jobs: + Sphinx: + name: 📓 Documentation generation using Sphinx and Python ${{ inputs.python_version }} + runs-on: ubuntu-latest + + steps: + - name: ⏬ Checkout repository + uses: actions/checkout@v4 + + - name: 📥 Download artifacts '${{ inputs.artifact }}' from 'Package' job + if: inputs.coverage_html_artifact != '' + uses: actions/download-artifact@v4 + with: + name: ${{ inputs.coverage_html_artifact }} + + - name: 🐍 Setup Python ${{ inputs.python_version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + + - name: 🔧 Install wheel,tomli and pip dependencies (native) + run: | + # python -m pip install --disable-pip-version-check -U wheel tomli + python -m pip install --disable-pip-version-check ${{ inputs.requirements }} + + - name: ☑ Generate HTML documentation + if: inputs.html_artifact != '' + run: | + export PYTHONPATH=$(pwd) + + ls -lah . + ls -lah report + + cd "${{ inputs.doc_directory || '.' }}" + sphinx-build -v -n -b html -d _build/doctrees -j $(nproc) -w _build/html.log . _build/html + + - name: ☑ Generate LaTeX documentation + if: inputs.latex_artifact != '' +# continue-on-error: true + run: | + export PYTHONPATH=$(pwd) + + cd "${{ inputs.doc_directory || '.' }}" + sphinx-build -v -n -b latex -d _build/doctrees -j $(nproc) -w _build/latex.log . _build/latex +# --builder html --doctree-dir _build/doctrees --verbose --fresh-env --write-all --nitpicky --warning-file _build/html.log . _build/html + + - name: 📤 Upload 'HTML Documentation' artifact + if: inputs.html_artifact != '' + continue-on-error: true + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.html_artifact }} + path: ${{ inputs.doc_directory }}/_build/html + if-no-files-found: error + retention-days: 1 + + - name: 📤 Upload 'LaTeX Documentation' artifact + if: inputs.latex_artifact != '' + continue-on-error: true + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.latex_artifact }} + path: ${{ inputs.doc_directory }}/_build/latex + if-no-files-found: error + retention-days: 1