Test and publish Python π package π¦ #6287
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This workflow will install Python dependencies, run tests and lint with a variety of Python versions | |
| # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions | |
| name: Test and publish Python π package π¦ | |
| on: | |
| push: | |
| pull_request: | |
| schedule: | |
| # Run on Mondays at 06:00 UTC | |
| - cron: '0 6 * * 1' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| # Force to use color | |
| env: | |
| FORCE_COLOR: true | |
| jobs: | |
| test-sphinx: | |
| name: Run tests on ${{ matrix.os }} for Python ${{ matrix.python-version }}, Sphinx ${{ matrix.sphinx-version }} | |
| timeout-minutes: 5 | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [windows-latest, macos-latest, ubuntu-latest] | |
| # test all python versions but the oldest one supported | |
| python-version: ["3.11", "3.12", "3.13", "3.14"] | |
| sphinx-version: ["latest"] | |
| include: | |
| - description: oldest supported dependencies on oldest supported python | |
| os: ubuntu-latest | |
| python-version: '3.10' | |
| sphinx-version: min | |
| - description: sphinx dev with latest python | |
| # dev does not work with python <= 3.11 so only test with latest python | |
| os: ubuntu-latest | |
| python-version: '3.14' | |
| sphinx-version: dev | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| architecture: x64 | |
| - name: Install the latest version of uv | |
| uses: astral-sh/setup-uv@v7 | |
| - name: Install tox | |
| run: uv tool install tox --with=tox-uv --with=tox-gh-actions | |
| - name: Run with Tox | |
| run: tox -e "${{matrix.python-version}}-sphinx${{matrix.sphinx-version}}" | |
| - name: Upload html coverage | |
| if: success() || failure() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: ${{ matrix.os }}_${{ matrix.python-version }}_${{matrix.sphinx-version}}_htmlcov | |
| path: htmlcov | |
| build-n-publish: | |
| if: startsWith(github.ref, 'refs/tags') && github.repository == 'sphinx-contrib/matlabdomain' | |
| name: Build and publish Python π distributions π¦ to PyPI | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python 3.11 | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: 3.11 | |
| - name: Build a binary wheel and a source tarball | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install wheel | |
| python setup.py sdist bdist_wheel | |
| - name: Publish distribution π¦ to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| user: __token__ | |
| password: ${{ secrets.PYPI_API_TOKEN }} | |
| - name: Release to GitHub | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: | | |
| sdist | |
| bdist_wheel |