Add Cirrus CI #595
This file contains 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: Scapy unit tests | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
# The branches below must be a subset of the branches above | |
branches: [master] | |
permissions: | |
contents: read | |
jobs: | |
health: | |
name: Code health check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Scapy | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Install tox | |
run: pip install tox | |
- name: Run flake8 tests | |
run: tox -e flake8 | |
- name: Run codespell | |
run: tox -e spell | |
- name: Run twine check | |
run: tox -e twine | |
- name: Run gitarchive check | |
run: tox -e gitarchive | |
docs: | |
# 'runs-on' and 'python-version' should match the ones defined in .readthedocs.yml | |
name: Build doc | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout Scapy | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Install tox | |
run: pip install tox | |
- name: Build docs | |
run: tox -e docs | |
spdx: | |
name: Check SPDX identifiers | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Scapy | |
uses: actions/checkout@v4 | |
- name: Launch script | |
run: bash scapy/tools/check_spdx.sh | |
mypy: | |
name: Type hints check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Scapy | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Install tox | |
run: pip install tox | |
- name: Run mypy | |
run: tox -e mypy | |
utscapy: | |
name: ${{ matrix.os }} ${{ matrix.installmode }} ${{ matrix.python }} ${{ matrix.mode }} ${{ matrix.flags }} | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 20 | |
continue-on-error: ${{ matrix.allow-failure == 'true' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
python: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] | |
mode: [non_root] | |
installmode: [''] | |
flags: [" -K scanner"] | |
allow-failure: ['false'] | |
include: | |
# Linux root tests | |
- os: ubuntu-latest | |
python: "3.12" | |
mode: root | |
flags: " -K scanner" | |
# PyPy tests: root only | |
- os: ubuntu-latest | |
python: "pypy3.9" | |
mode: root | |
flags: " -K scanner" | |
# Libpcap test | |
- os: ubuntu-latest | |
python: "3.12" | |
mode: root | |
installmode: 'libpcap' | |
flags: " -K scanner" | |
# macOS tests | |
- os: macos-14 | |
python: "3.12" | |
mode: both | |
flags: " -K scanner" | |
# Scanner tests | |
- os: ubuntu-latest | |
python: "3.12" | |
mode: root | |
allow-failure: 'true' | |
flags: " -k scanner" | |
- os: ubuntu-latest | |
python: "pypy3.9" | |
mode: root | |
allow-failure: 'true' | |
flags: " -k scanner" | |
- os: macos-14 | |
python: "3.12" | |
mode: both | |
allow-failure: 'true' | |
flags: " -k scanner" | |
steps: | |
- name: Checkout Scapy | |
uses: actions/checkout@v4 | |
# Codecov requires a fetch-depth > 1 | |
with: | |
fetch-depth: 2 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install Tox and any other packages | |
run: ./.config/ci/install.sh ${{ matrix.installmode }} | |
- name: Run Tox | |
run: UT_FLAGS="${{ matrix.flags }}" ./.config/ci/test.sh ${{ matrix.python }} ${{ matrix.mode }} | |
- name: Codecov | |
uses: codecov/codecov-action@v4 | |
continue-on-error: true | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
cryptography: | |
name: pyca/cryptography test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Install tox | |
run: pip install tox | |
# pyca/cryptography's CI installs cryptography | |
# then runs the tests. We therefore didn't include it in tox | |
- name: Install cryptography | |
run: pip install cryptography | |
- name: Run tests | |
run: tox -e cryptography | |
# CODE-QL | |
analyze: | |
name: CodeQL analysis | |
runs-on: ubuntu-latest | |
permissions: | |
security-events: write | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v3 | |
with: | |
languages: 'python' | |
- name: Perform CodeQL Analysis | |
uses: github/codeql-action/analyze@v3 |