name: CI on: [push, pull_request] permissions: contents: read jobs: build: runs-on: ubuntu-latest env: NETBOX_CONFIGURATION: netbox.configuration_testing strategy: matrix: python-version: ['3.8', '3.9', '3.10', '3.11'] node-version: ['14.x'] services: redis: image: redis ports: - 6379:6379 postgres: image: postgres env: POSTGRES_USER: netbox POSTGRES_PASSWORD: netbox options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 steps: - name: Check out repo uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 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@v3 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 - name: Install dependencies & set up configuration run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install pycodestyle coverage tblib - name: Build documentation run: mkdocs build - name: Collect static files run: python netbox/manage.py collectstatic --no-input - name: Check for missing migrations run: python netbox/manage.py makemigrations --check - name: Check PEP8 compliance run: pycodestyle --ignore=W504,E501 --exclude=node_modules netbox/ - 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 - name: Show coverage report run: coverage report --skip-covered --omit '*/migrations/*,*/tests/*'