Feat/kb endpoints api 2.3 #40
Workflow file for this run
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
| name: CI | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| tests: | |
| name: Tests (Python ${{ matrix.python-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13"] | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e .[dev] | |
| - name: Run tests | |
| run: python -m pytest -m "not integration" | |
| coverage: | |
| name: Code coverage | |
| runs-on: ubuntu-latest | |
| needs: tests | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e .[dev] | |
| - name: Run tests with coverage | |
| run: >- | |
| python -m pytest | |
| -m "not integration" | |
| --cov=glpi_python_client | |
| --cov-report=term-missing | |
| --cov-report=xml | |
| --cov-fail-under=95 | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| files: ./coverage.xml | |
| fail_ci_if_error: false | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| quality: | |
| name: Lint, typing, and docs | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e .[dev] | |
| - name: Run Ruff | |
| run: python -m ruff check . | |
| - name: Run mypy | |
| run: python -m mypy glpi_python_client | |
| - name: Build documentation | |
| run: python -m sphinx -W --keep-going -b html docs docs/_build/html | |
| publish-readthedocs: | |
| name: Publish latest docs | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
| needs: | |
| - tests | |
| - coverage | |
| - quality | |
| runs-on: ubuntu-latest | |
| env: | |
| READTHEDOCS_BASE_URL: ${{ vars.READTHEDOCS_BASE_URL }} | |
| READTHEDOCS_PROJECT: ${{ secrets.READTHEDOCS_PROJECT }} | |
| READTHEDOCS_TOKEN: ${{ secrets.READTHEDOCS_TOKEN }} | |
| READTHEDOCS_VERSION: ${{ vars.READTHEDOCS_MAIN_VERSION }} | |
| steps: | |
| - name: Trigger Read the Docs latest build | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| if [ -z "${READTHEDOCS_TOKEN:-}" ] || [ -z "${READTHEDOCS_PROJECT:-}" ]; then | |
| echo "Read the Docs secrets are not configured; skipping latest build." | |
| exit 0 | |
| fi | |
| base_url="${READTHEDOCS_BASE_URL:-https://app.readthedocs.org}" | |
| version="${READTHEDOCS_VERSION:-latest}" | |
| curl --fail --silent --show-error --location \ | |
| --request POST \ | |
| --header "Authorization: Token ${READTHEDOCS_TOKEN}" \ | |
| "${base_url}/api/v3/projects/${READTHEDOCS_PROJECT}/versions/${version}/builds/" |