Python PR #38
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: Python PR | |
| permissions: | |
| contents: read | |
| on: | |
| pull_request: | |
| branches: ["master"] | |
| push: | |
| branches: ["master"] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| comment: | |
| name: Comment | |
| runs-on: ubuntu-latest | |
| permissions: | |
| pull-requests: write | |
| if: ${{ github.event_name == 'pull_request' && github.event.action == 'opened' }} | |
| steps: | |
| - name: Comment PR | |
| uses: thollander/actions-comment-pull-request@v3 | |
| with: | |
| message: | | |
| :wave: Thank you for contributing this pull request! | |
| This repository uses GitHub Actions to automatically run tests, build the project, and check code quality on each pull request. | |
| Please address _all_ issues found by these checks to ensure a smooth review process. | |
| Please review our [Contribution Guidelines](https://github.com/Koen1999/suricata-check/blob/master/CONTRIBUTING.md) to learn everything you should know about contributing to our project! | |
| Note that for first time contributors, action workflows have to be approved first by the maintainers before they can run. | |
| Please be patient, and a maintainer will review your PR soon! :pray: | |
| test: | |
| name: Quick Test | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| python-version: ["3.9", "3.14"] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: "pip" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade --upgrade-strategy eager pip pip-tools suricata-check[performance] | |
| pip-compile --extra test -o requirements.txt pyproject.toml | |
| pip install -r requirements.txt | |
| - name: Test using pytest | |
| run: | | |
| pytest | |
| - name: Install optional ml dependencies | |
| run: | | |
| pip-compile --extra test --extra ml -o requirements-ml.txt pyproject.toml | |
| pip install -r requirements-ml.txt | |
| - name: Test using pytest with optional ml dependencies | |
| run: | | |
| pytest | |
| build: | |
| name: Build | |
| runs-on: ${{ matrix.os }} | |
| needs: | |
| - test | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| python-version: ["3.9", "3.14"] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: "pip" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade --upgrade-strategy eager pip build | |
| - name: Build and install with pip | |
| run: | | |
| python -m build | |
| pip install . | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| needs: | |
| - test | |
| strategy: | |
| fail-fast: true | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade --upgrade-strategy eager pip pip-tools setuptools-git-versioning | |
| pip-compile --all-extras -o requirements-dev.txt pyproject.toml | |
| pip install -r requirements-dev.txt | |
| - name: Lint with flake8 | |
| run: | | |
| flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics | |
| - name: Type checking with Pyright | |
| run: | | |
| python -m pyright | |
| - name: Lint with Black | |
| run: | | |
| black . --check | |
| - name: Lint with Ruff | |
| run: | | |
| ruff check --output-format=github . | |
| test-minimal: | |
| name: Minimal Dependency Test | |
| runs-on: ${{ matrix.os }} | |
| needs: | |
| - test | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| python-version: ["3.9", "3.14"] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: "pip" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade --upgrade-strategy eager pip uv suricata-check[performance] | |
| uv pip compile pyproject.toml --resolution lowest-direct --extra test -o requirements-minimal.txt | |
| pip install -r requirements-minimal.txt | |
| - name: Test using pytest | |
| run: | | |
| pytest | |
| - name: Install optional ml dependencies | |
| run: | | |
| uv pip compile pyproject.toml --resolution lowest-direct --extra test --extra ml -o requirements-minimal-ml.txt | |
| pip install -r requirements-minimal-ml.txt | |
| - name: Test using pytest with optional ml dependencies | |
| run: | | |
| pytest | |
| lint-minimal: | |
| name: Minimal Dependency Lint | |
| runs-on: ubuntu-latest | |
| needs: | |
| - test-minimal | |
| - lint | |
| strategy: | |
| fail-fast: true | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.9" | |
| cache: "pip" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade --upgrade-strategy eager pip setuptools-git-versioning uv | |
| uv pip compile pyproject.toml --resolution lowest-direct --all-extras -o requirements-minimal-dev.txt | |
| pip install -r requirements-minimal-dev.txt | |
| - name: Install Pyright | |
| run: | | |
| python -m pip install --upgrade --upgrade-strategy eager pyright | |
| - name: Type checking with Pyright | |
| run: | | |
| python -m pyright | |
| markdownlint: | |
| name: Markdownlint | |
| runs-on: ubuntu-latest | |
| needs: | |
| - lint | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v5 | |
| - uses: dorny/paths-filter@v3 | |
| id: changes | |
| with: | |
| filters: | | |
| src: | |
| - "**/*.md" | |
| - name: Setup Node.js | |
| if: steps.changes.outputs.src == 'true' | |
| uses: actions/setup-node@v6 | |
| - name: Install markdownlint-cli2 | |
| if: steps.changes.outputs.src == 'true' | |
| run: npm install -g markdownlint-cli2 | |
| - name: Run Markdownlint | |
| if: steps.changes.outputs.src == 'true' | |
| run: markdownlint-cli2 "**/*.md" | |
| docs: | |
| name: Docs | |
| runs-on: ubuntu-latest | |
| needs: | |
| - markdownlint | |
| strategy: | |
| fail-fast: true | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade --upgrade-strategy eager pip pip-tools | |
| pip-compile --all-extras -o requirements-dev.txt pyproject.toml | |
| pip install -r requirements-dev.txt | |
| - name: Generate docs with sphinx | |
| run: | | |
| cd docs | |
| make clean | |
| make html |