melexis/sphinx-traceability-extension

View on GitHub
.github/workflows/python-package.yml

Summary

Maintainability
Test Coverage
name: Test and deploy on tag

on:
  push:
    tags:
    - 'v*'
    branches:
    - master
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  test:

    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
    steps:
    - uses: actions/checkout@v4
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install tox tox-gh-actions
        sudo apt-get update -y
        sudo apt-get install -y latexmk texlive-latex-extra
        sudo apt-get install -y graphviz
        sudo apt-get install -y plantuml
    - name: Run test
      run: tox -e py
    - name: Build documentation with Sphinx version 2.4.5
      env:
        PRIVATE_TOKEN: ${{ secrets.PRIVATE_TOKEN }}
      run: tox -e sphinx2.4.5
    - name: Build documentation with Sphinx version 6.2.1
      env:
        PRIVATE_TOKEN: ${{ secrets.PRIVATE_TOKEN }}
      run: tox -e sphinx6.2.1
    - name: Build documentation with Sphinx >= 8.0
      env:
        PRIVATE_TOKEN: ${{ secrets.PRIVATE_TOKEN }}
      if: matrix.python-version > 3.9
      run: tox -e sphinx-latest
    - name: Codecov
      if: matrix.python-version == 3.9
      run: tox -e codecov
    - name: Static checks
      if: matrix.python-version == 3.9
      run: tox -e check
    - name: Upload HTML documentation
      if: matrix.python-version == 3.9
      uses: actions/upload-artifact@v4
      with:
        name: html-doc
        path: doc/_build/html

  deploy:

    if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
    needs: test
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Download HTML documentation from job 'test'
      uses: actions/download-artifact@v4
      with:
        name: html-doc
        path: doc/_build/html
    - name: Disable jekyll
      run: touch doc/_build/html/.nojekyll
    - name: Deploy documentation
      uses: JamesIves/github-pages-deploy-action@v4
      with:
        branch: gh-pages
        folder: doc/_build/html
    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.12'
    - name: Install dependencies
      run: |
        python -m pip install --upgrade build twine
    - name: Build and publish
      env:
        TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
        TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
      run: |
        python -m build
        twine upload dist/*