Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 31 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
name: CI

on:
Expand Down Expand Up @@ -26,13 +27,22 @@ concurrency:

jobs:
build:
name: >-
Tests (Python ${{ matrix.python-version }},
Node ${{ matrix.node-version }}${{ matrix.coverage && ', coverage' || '' }})
runs-on: ubuntu-latest
env:
NETBOX_CONFIGURATION: netbox.configuration_testing
strategy:
matrix:
python-version: ['3.12', '3.13', '3.14']
node-version: ['20.x']
include:
- coverage: false
# Run coverage only once, using the Python 3.14 job.
- python-version: '3.14'
node-version: '20.x'
coverage: true
services:
redis:
image: redis
Expand All @@ -53,35 +63,35 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Check Python linting & PEP8 compliance
uses: astral-sh/ruff-action@0ce1b0bf8b818ef400413f810f8a11cdbda0034b # v4.0.0
uses: astral-sh/ruff-action@0ce1b0bf8b818ef400413f810f8a11cdbda0034b # v4.0.0
with:
version: "0.15.10"
args: "check --output-format=github"
src: "netbox/"

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: ${{ matrix.node-version }}

- name: Install Yarn Package Manager
run: npm install -g yarn

- name: Setup Node.js with Yarn Caching
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: ${{ matrix.node-version }}
cache: yarn
cache-dependency-path: netbox/project-static/yarn.lock

- name: Install Frontend Dependencies
run: yarn --cwd netbox/project-static

Expand All @@ -102,12 +112,22 @@ jobs:

- name: Check UI ESLint, TypeScript, and Prettier Compliance
run: yarn --cwd netbox/project-static validate

- name: Validate Static Asset Integrity
run: scripts/verify-bundles.sh

- name: Run tests
run: coverage run --source="netbox/" netbox/manage.py test netbox/ --parallel
if: ${{ ! matrix.coverage }}
run: python netbox/manage.py test netbox/ --parallel

- name: Run tests with coverage
if: ${{ matrix.coverage }}
run: >-
coverage run --source="netbox/"
netbox/manage.py test netbox/ --parallel

- name: Show coverage report
run: coverage report --skip-covered --omit '*/migrations/*,*/tests/*'
if: ${{ matrix.coverage }}
run: >-
coverage report --skip-covered
--omit '*/migrations/*,*/tests/*'
Loading