Skip to content

[2.4] Fix generic filter test error message (LTM 2.4) #20859

[2.4] Fix generic filter test error message (LTM 2.4)

[2.4] Fix generic filter test error message (LTM 2.4) #20859

Workflow file for this run

---
# A lighter-weight version of CI specifically for pull requests
name: "CI - Pull Request"
concurrency: # Cancel any existing runs of this workflow for this same PR
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true
on: # yamllint disable
pull_request:
workflow_call:
jobs:
security-tooling:
name: "Security Tooling"
runs-on: "ubuntu-22.04"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Security checks"
uses: "./.github/actions/security-checks"
ruff:
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "--only dev --only linting"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Linting: ruff"
run: "poetry run invoke ruff --output-format github"
yamllint:
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "--only dev --only linting"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Linting: yamllint"
run: "poetry run invoke yamllint"
markdownlint:
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "--only dev --only linting"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Linting: pymarkdownlnt"
run: "poetry run invoke markdownlint"
docs:
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "--only dev --only docs"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Linting: docs build and validation"
run: "poetry run invoke build-and-check-docs"
djhtml:
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "--only dev --only linting"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Linting: djhtml"
run: "poetry run invoke djhtml"
djlint:
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "--only dev --only linting"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Linting: djlint"
run: "poetry run invoke djlint"
hadolint:
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Run Hadolint"
uses: "hadolint/hadolint-action@d7b38582334d9ac11c12021c16f21d63015fa250" # v1.6.0
with:
dockerfile: "docker/Dockerfile"
check-migrations:
name: "Run 'nautobot-server makemigrations --dry-run --check'"
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
NAUTOBOT_DB_USER: "nautobot"
NAUTOBOT_DB_PASSWORD: "decinablesprewad"
NAUTOBOT_DB_ENGINE: "django_prometheus.db.backends.postgresql"
services:
postgres:
image: "postgres:13-alpine"
env:
POSTGRES_USER: "nautobot"
POSTGRES_PASSWORD: "decinablesprewad"
POSTGRES_DB: "nautobot"
ports:
- "5432:5432"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "" # override default "--only dev"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Run check migrations"
run: "poetry run invoke check-migrations"
check-schema:
name: "Run REST API schema checks"
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
NAUTOBOT_DB_USER: "nautobot"
NAUTOBOT_DB_PASSWORD: "decinablesprewad"
NAUTOBOT_DB_ENGINE: "django_prometheus.db.backends.postgresql"
NAUTOBOT_CONFIG: "nautobot/core/tests/nautobot_config.py"
services:
postgres:
image: "postgres:13-alpine"
env:
POSTGRES_USER: "nautobot"
POSTGRES_PASSWORD: "decinablesprewad"
POSTGRES_DB: "nautobot"
ports:
- "5432:5432"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "" # override default "--only dev"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Run check-schema"
# REST API schema generation currently includes GraphQL schema generation, which is dependent on the DB :-(
run: "poetry run invoke migrate check-schema"
pylint:
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
NAUTOBOT_DB_USER: "nautobot"
NAUTOBOT_DB_PASSWORD: "decinablesprewad"
NAUTOBOT_DB_ENGINE: "django_prometheus.db.backends.postgresql"
NAUTOBOT_CONFIG: "nautobot/core/tests/nautobot_config.py"
services:
postgres:
image: "postgres:13-alpine"
env:
POSTGRES_USER: "nautobot"
POSTGRES_PASSWORD: "decinablesprewad"
POSTGRES_DB: "nautobot"
ports:
- "5432:5432"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "" # override default "--only dev"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Run pylint"
run: "poetry run invoke pylint"
tests-postgres:
name: "Unit tests (PostgreSQL and Python 3.10)"
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
NAUTOBOT_DB_USER: "nautobot"
NAUTOBOT_DB_PASSWORD: "decinablesprewad"
NAUTOBOT_DB_ENGINE: "django_prometheus.db.backends.postgresql"
services:
postgres:
image: "postgres:13-alpine"
env:
POSTGRES_USER: "nautobot"
POSTGRES_PASSWORD: "decinablesprewad"
POSTGRES_DB: "nautobot"
ports:
- "5432:5432"
redis:
image: "redis:6-alpine"
ports:
- "6379:6379"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "" # override default "--only dev"
poetry-version: "2.1.4"
python-version: "3.10"
- name: "Run unittest"
run: "poetry run invoke tests --failfast --no-keepdb --no-cache-test-fixtures --parallel"
needs:
- "check-migrations"
- "check-schema"
- "docs"
- "hadolint"
- "markdownlint"
- "ruff"
- "yamllint"
- "djhtml"
- "djlint"
tests-mysql-plus-coverage:
name: "Unit tests (MySQL and Python 3.12) plus test coverage reporting"
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
NAUTOBOT_DB_USER: "root"
NAUTOBOT_DB_PASSWORD: "decinablesprewad"
NAUTOBOT_DB_HOST: "127.0.0.1"
NAUTOBOT_DB_PORT: "3306"
NAUTOBOT_DB_ENGINE: "django_prometheus.db.backends.mysql"
permissions:
pull-requests: "write"
contents: "write"
services:
mysql:
image: "mysql:8"
env:
MYSQL_ROOT_PASSWORD: "decinablesprewad"
MYSQL_PASSWORD: "decinablesprewad"
MYSQL_DATABASE: "nautobot"
ports:
- "3306:3306"
redis:
image: "redis:6-alpine"
ports:
- "6379:6379"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Install Required Dependencies for MySQL Client"
run: "sudo apt-get update && sudo apt-get install --no-install-recommends -y default-libmysqlclient-dev gcc"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "--extras mysql"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Run unittest"
run: "poetry run invoke tests --failfast --no-keepdb --no-cache-test-fixtures --parallel --coverage"
- name: "Generate coverage comment"
if: >
contains(fromJson('["ltm-2.4","develop","next"]'), github.base_ref) &&
(github.head_ref != 'main') && (!startsWith(github.head_ref, 'release'))
id: "coverage_comment"
uses: "py-cov-action/python-coverage-comment-action@d1ff8fbb5ff80feedb3faa0f6d7b424f417ad0e1" # v3.30
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
MINIMUM_GREEN: 90
MINIMUM_ORANGE: 80
ANNOTATE_MISSING_LINES: true
ANNOTATION_TYPE: "warning"
- name: "Store Pull Request comment to be posted"
if: >
contains(fromJson('["ltm-2.4","develop","next"]'), github.base_ref) &&
(github.head_ref != 'main') && (!startsWith(github.head_ref, 'release'))
uses: "actions/upload-artifact@v4"
with:
name: "python-coverage-comment-action"
path: "python-coverage-comment-action.txt"
needs:
- "check-migrations"
- "check-schema"
- "docs"
- "hadolint"
- "markdownlint"
- "ruff"
- "yamllint"
- "djhtml"
- "djlint"
migration-tests-mysql:
name: "Run migrations against test dataset (MySQL and Python 3.10)"
runs-on: "ubuntu-24.04"
env:
MIGRATION_TEST_DATASET: "development/datasets/nautobot_1.5.16_mysql.tar.gz"
INVOKE_NAUTOBOT_LOCAL: "True"
NAUTOBOT_CONFIG: "nautobot/core/tests/nautobot_config.py"
NAUTOBOT_DB_USER: "root"
NAUTOBOT_DB_PASSWORD: "decinablesprewad"
NAUTOBOT_DB_HOST: "127.0.0.1"
NAUTOBOT_DB_PORT: "3306"
NAUTOBOT_DB_ENGINE: "django_prometheus.db.backends.mysql"
services:
mysql:
image: "mysql:8"
env:
MYSQL_ROOT_PASSWORD: "decinablesprewad"
MYSQL_PASSWORD: "decinablesprewad"
MYSQL_DATABASE: "nautobot"
ports:
- "3306:3306"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Install Required Dependencies for MySQL Client"
run: "sudo apt-get update && sudo apt-get install --no-install-recommends -y default-libmysqlclient-dev gcc"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "--extras mysql"
poetry-version: "2.1.4"
python-version: "3.10"
- name: "Run migration test"
run: "poetry run invoke migration-test --db-engine mysql --dataset $MIGRATION_TEST_DATASET"
needs:
- "check-migrations"
- "check-schema"
- "docs"
- "hadolint"
- "markdownlint"
- "ruff"
- "yamllint"
- "djhtml"
- "djlint"
migration-tests-postgres:
name: "Run migrations against test dataset (PostgreSQL and Python 3.12)"
runs-on: "ubuntu-24.04"
env:
MIGRATION_TEST_DATASET: "development/datasets/nautobot_1.5.16_postgres.tar.gz"
INVOKE_NAUTOBOT_LOCAL: "True"
NAUTOBOT_CONFIG: "nautobot/core/tests/nautobot_config.py"
NAUTOBOT_DB_USER: "nautobot"
NAUTOBOT_DB_PASSWORD: "decinablesprewad"
NAUTOBOT_DB_ENGINE: "django_prometheus.db.backends.postgresql"
PGPASSWORD: "decinablesprewad"
services:
postgres:
image: "postgres:13-alpine"
env:
POSTGRES_USER: "nautobot"
POSTGRES_PASSWORD: "decinablesprewad"
POSTGRES_DB: "nautobot"
ports:
- "5432:5432"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "" # override default "--only dev"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Run migration test"
run: "poetry run invoke migration-test --db-engine postgres --dataset $MIGRATION_TEST_DATASET"
needs:
- "check-migrations"
- "check-schema"
- "docs"
- "hadolint"
- "markdownlint"
- "ruff"
- "yamllint"
- "djhtml"
- "djlint"
integration-test:
runs-on: "ubuntu-24.04"
env:
INVOKE_NAUTOBOT_LOCAL: "True"
NAUTOBOT_DB_USER: "nautobot"
NAUTOBOT_DB_PASSWORD: "decinablesprewad"
NAUTOBOT_DB_ENGINE: "django_prometheus.db.backends.postgresql"
NAUTOBOT_SELENIUM_URL: "http://localhost:4444/wd/hub"
services:
postgres:
image: "postgres:13-alpine"
env:
POSTGRES_USER: "nautobot"
POSTGRES_PASSWORD: "decinablesprewad"
POSTGRES_DB: "nautobot"
ports:
- "5432:5432"
redis:
image: "redis:6-alpine"
ports:
- "6379:6379"
selenium:
image: "selenium/standalone-firefox:4.27"
ports:
- "4444:4444"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "" # override default "--only dev"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Run Integration Tests"
# If NAUTOBOT_SELENIUM_HOST is set to 'localhost' or '127.0.0.1' the connection does not work
run: "NAUTOBOT_SELENIUM_HOST=`hostname -f` poetry run invoke tests --tag integration --no-keepdb"
needs:
- "check-migrations"
- "check-schema"
- "docs"
- "hadolint"
- "markdownlint"
- "ruff"
- "yamllint"
- "djhtml"
- "djlint"
changelog:
if: ${{ (contains(fromJson('["develop","next"]'), github.base_ref)) || (startsWith(github.base_ref, 'ltm')) }}
runs-on: "ubuntu-24.04"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
with:
fetch-depth: "0"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-install-options: "--only dev"
poetry-version: "2.1.4"
python-version: "3.12"
- name: "Check for changelog entry"
run: |
git fetch --no-tags origin +refs/heads/${{ github.base_ref }}:refs/remotes/origin/${{ github.base_ref }}
poetry run towncrier check --compare-with origin/${{ github.base_ref }}
container-build-test:
name: "Test Container Build (amd64 only on Python 3.12)"
runs-on: "ubuntu-24.04"
needs:
- "check-migrations"
- "check-schema"
- "docs"
- "hadolint"
- "markdownlint"
- "ruff"
- "yamllint"
- "djhtml"
- "djlint"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Set up QEMU"
uses: "docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7" # v2
- name: "Set up Docker Buildx"
uses: "docker/setup-buildx-action@885d1462b80bc1c1c7f0b00334ad271f09369c55" # v2
- name: "Login to GitHub Container Registry"
uses: "docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc" # v2
with:
registry: "ghcr.io"
username: "${{ github.actor }}"
password: "${{ secrets.GITHUB_TOKEN }}"
- name: "Build `final`"
uses: "./.github/actions/build-nautobot-image"
with:
branch: "${{ github.head_ref }}"
image: "ghcr.io/nautobot/nautobot"
platforms: "linux/amd64"
push: "false"
python-version: "3.12"
tag-latest: "false"
tag-latest-for-branch: "false"
tag-latest-for-py: "false"
target: "final"
all-tests-passed:
runs-on: "ubuntu-24.04"
steps:
- run: "echo 'All tests succeeded'"
needs:
- "container-build-test"
- "integration-test"
- "migration-tests-mysql"
- "migration-tests-postgres"
- "pylint"
- "tests-mysql-plus-coverage"
- "tests-postgres"