Dependency updates (#8262) (#8302) #3196
This file contains hidden or 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
| --- | |
| # Full CI for commits to the integration branches (main, develop, next, and long-term maintenance branches) | |
| name: "CI - Integration Branch" | |
| on: # yamllint disable | |
| push: | |
| branches: | |
| - "main" | |
| - "develop" | |
| - "next" | |
| - "ltm-2.4" | |
| workflow_call: | |
| workflow_dispatch: | |
| jobs: | |
| security-tooling: | |
| name: "Security Tooling" | |
| runs-on: "ubuntu-24.04" | |
| steps: | |
| - name: "Check out repository code" | |
| uses: "actions/checkout@v4" | |
| - name: "Security checks" | |
| uses: "./.github/actions/security-checks" | |
| 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" | |
| tests-postgres: | |
| name: "Unit tests (PostgreSQL and Python 3.12)" | |
| 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.12" | |
| - name: "Run unittest" | |
| run: "poetry run invoke tests --failfast --no-keepdb --no-cache-test-fixtures --parallel" | |
| tests-mysql: | |
| name: "Unit tests (MySQL and Python 3.10)" | |
| 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" | |
| 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.10" | |
| - name: "Run unittest" | |
| run: "poetry run invoke tests --failfast --no-keepdb --no-cache-test-fixtures --parallel" | |
| 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" | |
| 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" | |
| 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" | |
| container-build: | |
| name: "Build Container Images (amd64 on GHCR Only)" | |
| runs-on: "ubuntu-24.04" | |
| if: | | |
| github.event_name == 'push' && | |
| (github.ref_name == 'develop' || github.ref_name == 'next' || github.ref_name == 'ltm-2.4') | |
| needs: | |
| - "check-schema" | |
| - "integration-test" | |
| - "migration-tests-mysql" | |
| - "migration-tests-postgres" | |
| - "tests-mysql" | |
| - "tests-postgres" | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| python-version: [ "3.10", "3.11", "3.12"] | |
| steps: | |
| - name: "Configuration" | |
| id: "config" | |
| shell: "bash" | |
| run: | | |
| export BRANCH="${{ github.ref_name }}" | |
| export TAG_LATEST="false" | |
| export TAG_LATEST_FOR_BRANCH="false" | |
| export TAG_LATEST_FOR_PY="false" | |
| if [[ "${{ matrix.python-version }}" == "3.12" ]]; then | |
| export TAG_LATEST_FOR_BRANCH="true" | |
| fi | |
| echo "branch=$BRANCH" >> $GITHUB_OUTPUT | |
| echo "tag-latest=$TAG_LATEST" >> $GITHUB_OUTPUT | |
| echo "tag-latest-for-branch=$TAG_LATEST_FOR_BRANCH" >> $GITHUB_OUTPUT | |
| echo "tag-latest-for-py=$TAG_LATEST_FOR_PY" >> $GITHUB_OUTPUT | |
| - 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`" | |
| if: | | |
| steps.config.outputs.tag-latest-for-branch == 'true' | |
| uses: "./.github/actions/build-nautobot-image" | |
| with: | |
| branch: "${{ steps.config.outputs.branch }}" | |
| image: "ghcr.io/nautobot/nautobot" | |
| platforms: "linux/amd64" | |
| push: "false" | |
| python-version: "${{ matrix.python-version }}" | |
| tag-latest: "${{ steps.config.outputs.tag-latest }}" | |
| tag-latest-for-branch: "${{ steps.config.outputs.tag-latest-for-branch }}" | |
| tag-latest-for-py: "${{ steps.config.outputs.tag-latest-for-py }}" | |
| target: "final" | |
| - name: "Build and Push `final-dev`" | |
| uses: "./.github/actions/build-nautobot-image" | |
| with: | |
| branch: "${{ steps.config.outputs.branch }}" | |
| image: "ghcr.io/nautobot/nautobot-dev" | |
| platforms: "linux/amd64" | |
| push: "true" | |
| python-version: "${{ matrix.python-version }}" | |
| tag-latest: "${{ steps.config.outputs.tag-latest }}" | |
| tag-latest-for-branch: "${{ steps.config.outputs.tag-latest-for-branch }}" | |
| tag-latest-for-py: "${{ steps.config.outputs.tag-latest-for-py }}" | |
| target: "final-dev" |