|
|
@@ -1,3 +1,4 @@
|
|
|
+---
|
|
|
name: CI
|
|
|
|
|
|
on:
|
|
|
@@ -26,6 +27,9 @@ 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
|
|
|
@@ -33,6 +37,12 @@ jobs:
|
|
|
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
|
|
|
@@ -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
|
|
|
|
|
|
@@ -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/*'
|