ammaraskar / sphinx-action

Github action that builds docs using sphinx and places errors inline
Apache License 2.0
189 stars 114 forks source link
github-action github-actions sphinx status-check

Sphinx Build Action

Build Status Test Coverage

This is a Github action that looks for Sphinx documentation folders in your project. It builds the documentation using Sphinx and any errors in the build process are bubbled up as Github status checks.

The main purposes of this action are:

Example Screenshot

How to use

Create a workflow for the action, for example:

name: "Pull Request Docs Check"
on: 
- pull_request

jobs:
  docs:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - uses: ammaraskar/sphinx-action@master
      with:
        docs-folder: "docs/"

For a full example repo using this action including advanced usage, take a look at https://github.com/ammaraskar/sphinx-action-test

Great Actions to Pair With

Some really good actions that work well with this one are actions/upload-artifact and ad-m/github-push-action.

You can use these to make built HTML and PDFs available as artifacts:

    - uses: actions/upload-artifact@v1
      with:
        name: DocumentationHTML
        path: docs/_build/html/

Or to push docs changes automatically to a gh-pages branch:

Code for your workflow

```yaml - name: Commit documentation changes run: | git clone https://github.com/your_git/repository.git --branch gh-pages --single-branch gh-pages cp -r docs/_build/html/* gh-pages/ cd gh-pages git config --local user.email "action@github.com" git config --local user.name "GitHub Action" git add . git commit -m "Update documentation" -a || true # The above command will fail if no changes were present, so we ignore # the return code. - name: Push changes uses: ad-m/github-push-action@master with: branch: gh-pages directory: gh-pages github_token: ${{ secrets.GITHUB_TOKEN }} ```

For a full fledged example of this in action take a look at: https://github.com/ammaraskar/sphinx-action-test

Advanced Usage

If you wish to customize the command used to build the docs (defaults to make html), you can provide a build-command in the with block. For example, to invoke sphinx-build directly you can use:

    - uses: ammaraskar/sphinx-action@master
      with:
        docs-folder: "docs/"
        build-command: "sphinx-build -b html . _build"

If there's system level dependencies that need to be installed for your build, you can use the pre-build-command argument like so:

    - uses: ammaraskar/sphinx-action@master
      with:
        docs-folder: "docs2/"
        pre-build-command: "apt-get update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended"
        build-command: "make latexpdf"

Running the tests

python -m unittest

Formatting

Please use black for formatting:

black entrypoint.py sphinx_action tests