melexis/warnings-plugin

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

Summary

Maintainability
Test Coverage
name: Test and deploy on tag

on: push

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@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v4
      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 graphviz
        sudo apt-get install plantuml
    - name: Run test
      run: tox -e py
    - name: Build HTML documentation
      run: tox -e docs
    - name: Calculate coverage
      run: tox -e coverage
    - name: Codecov uploader
      if: matrix.python-version == '3.10'
      uses: codecov/codecov-action@v3
    - name: Static checks
      if: matrix.python-version == '3.10'
      run: tox -e check
    - name: Test editable installation with pip
      run: pip install -e .
    - name: Upload HTML documentation
      if: matrix.python-version == '3.10'
      uses: actions/upload-artifact@v3
      with:
        name: html-doc
        path: docs/_build

  deploy:

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