name: CI on: push: branches: - master pull_request: branches: - master jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: - "3.9" - "3.10" - "3.11" - "3.12" steps: - uses: actions/checkout@v4 - name: Install Python 3 uses: actions/setup-python@v5 - name: Uninstall meshtastic run: | pip3 uninstall -y meshtastic - name: Install dependencies run: | python -m pip install --upgrade pip pip3 install poetry - name: Install meshtastic from local run: | poetry install --all-extras --with dev,powermon poetry run meshtastic --version - name: Run pylint run: poetry run pylint meshtastic examples/ --ignore-patterns ".*_pb2.pyi?$" - name: Check types with mypy run: poetry run mypy meshtastic/ - name: Run tests with pytest run: poetry run pytest --cov=meshtastic - name: Generate coverage report run: | poetry run pytest --cov=meshtastic --cov-report=xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} env_vars: OS, PYTHON files: ./coverage.xml flags: unittests name: codecov-umbrella fail_ci_if_error: true verbose: true validate: runs-on: ubuntu-latest strategy: matrix: python-version: - "3.9" - "3.10" - "3.11" - "3.12" steps: - uses: actions/checkout@v4 - name: Install Python 3 uses: actions/setup-python@v5 - name: Install meshtastic from local run: | python -m pip install --upgrade pip pip3 install poetry poetry install poetry run meshtastic --version