diff --git a/.github/workflows/migration_test.yaml b/.github/workflows/migration_test.yaml deleted file mode 100644 index 6fa9431f2c..0000000000 --- a/.github/workflows/migration_test.yaml +++ /dev/null @@ -1,117 +0,0 @@ -# This workflow ensures that any database migrations apply cleanly to a "production" database -# On a PR to master, the workflow will run against a "sample" production database, -# which is sitting at the current "master" migration level -# On a push to master, the workflow will also commit any migrations to the "production" database - -name: Migration Testing - -on: - push: - branches: - - master - pull_request: - branches: - - master - -env: - python_version: 3.9 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - INVENTREE_MEDIA_ROOT: ../test_inventree_media - INVENTREE_STATIC_ROOT: ../test_inventree_static - INVENTREE_BACKUP_DIR: ../test_inventree_backup - INVENTREE_DEBUG: info - INVENTREE_PLUGINS_ENABLED: false - -jobs: - paths-filter: - name: Filter - runs-on: ubuntu-latest - - outputs: - migrations: ${{ steps.filter.outputs.migrations }} - - steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 - - uses: dorny/paths-filter@v2 - id: filter - with: - filters: | - migrations: - - '**/migrations/**' - - '.github/workflows**' - - migration-tests: - name: Run Migration Unit Tests - runs-on: ubuntu-latest - needs: paths-filter - if: needs.paths-filter.outputs.migrations == 'true' - - env: - INVENTREE_DB_ENGINE: django.db.backends.postgresql - INVENTREE_DB_NAME: inventree - INVENTREE_DB_USER: inventree - INVENTREE_DB_PASSWORD: password - INVENTREE_DB_HOST: '127.0.0.1' - INVENTREE_DB_PORT: 5432 - - services: - postgres: - image: postgres:14 - env: - POSTGRES_USER: inventree - POSTGRES_PASSWORD: password - ports: - - 5432:5432 - - steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 - - name: Environment Setup - uses: ./.github/actions/setup - with: - apt-dependency: gettext poppler-utils libpq-dev - pip-dependency: psycopg2 - dev-install: true - update: true - - name: Run Tests - run: invoke test --migrations --report - - migrations-checks: - name: Run Database Migrations - runs-on: ubuntu-latest - needs: paths-filter - if: needs.paths-filter.outputs.migrations == 'true' - - env: - INVENTREE_DB_ENGINE: sqlite3 - INVENTREE_DB_NAME: /home/runner/work/InvenTree/db.sqlite3 - - steps: - - uses: actions/checkout@v3 - name: Checkout Code - - name: Environment Setup - uses: ./.github/actions/setup - with: - install: true - - name: Fetch Database - run: | - git clone --depth 1 https://github.com/inventree/test-db ./test-db - - - name: Latest Database - run: | - cp test-db/latest.sqlite3 /home/runner/work/InvenTree/db.sqlite3 - chmod +rw /home/runner/work/InvenTree/db.sqlite3 - invoke migrate - - - name: 0.10.0 Database - run: | - rm /home/runner/work/InvenTree/db.sqlite3 - cp test-db/stable_0.10.0.sqlite3 /home/runner/work/InvenTree/db.sqlite3 - chmod +rw /home/runner/work/InvenTree/db.sqlite3 - invoke migrate - - - name: 0.11.0 Database - run: | - rm /home/runner/work/InvenTree/db.sqlite3 - cp test-db/stable_0.11.0.sqlite3 /home/runner/work/InvenTree/db.sqlite3 - chmod +rw /home/runner/work/InvenTree/db.sqlite3 - invoke migrate diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index 439fcf59c0..569bd90de5 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -28,6 +28,7 @@ jobs: outputs: server: ${{ steps.filter.outputs.server }} + migrations: ${{ steps.filter.outputs.migrations }} steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 @@ -39,6 +40,9 @@ jobs: - 'InvenTree/**' - 'requirements.txt' - 'requirements-dev.txt' + migrations: + - '**/migrations/**' + - '.github/workflows**' pep_style: name: Style [Python] @@ -297,3 +301,82 @@ jobs: run: invoke test - name: Data Export Test uses: ./.github/actions/migration + + migration-tests: + name: Run Migration Unit Tests + runs-on: ubuntu-latest + needs: paths-filter + if: github.ref == 'refs/heads/master' && needs.paths-filter.outputs.migrations == 'true' + + env: + INVENTREE_DB_ENGINE: django.db.backends.postgresql + INVENTREE_DB_NAME: inventree + INVENTREE_DB_USER: inventree + INVENTREE_DB_PASSWORD: password + INVENTREE_DB_HOST: '127.0.0.1' + INVENTREE_DB_PORT: 5432 + INVENTREE_DEBUG: info + INVENTREE_PLUGINS_ENABLED: false + + services: + postgres: + image: postgres:14 + env: + POSTGRES_USER: inventree + POSTGRES_PASSWORD: password + ports: + - 5432:5432 + + steps: + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + - name: Environment Setup + uses: ./.github/actions/setup + with: + apt-dependency: gettext poppler-utils libpq-dev + pip-dependency: psycopg2 + dev-install: true + update: true + - name: Run Tests + run: invoke test --migrations --report + + migrations-checks: + name: Run Database Migrations + runs-on: ubuntu-latest + needs: paths-filter + if: github.ref == 'refs/heads/master' && needs.paths-filter.outputs.migrations == 'true' + + env: + INVENTREE_DB_ENGINE: sqlite3 + INVENTREE_DB_NAME: /home/runner/work/InvenTree/db.sqlite3 + INVENTREE_DEBUG: info + INVENTREE_PLUGINS_ENABLED: false + + steps: + - uses: actions/checkout@v3 + name: Checkout Code + - name: Environment Setup + uses: ./.github/actions/setup + with: + install: true + - name: Fetch Database + run: git clone --depth 1 https://github.com/inventree/test-db ./test-db + + - name: Latest Database + run: | + cp test-db/latest.sqlite3 /home/runner/work/InvenTree/db.sqlite3 + chmod +rw /home/runner/work/InvenTree/db.sqlite3 + invoke migrate + + - name: 0.10.0 Database + run: | + rm /home/runner/work/InvenTree/db.sqlite3 + cp test-db/stable_0.10.0.sqlite3 /home/runner/work/InvenTree/db.sqlite3 + chmod +rw /home/runner/work/InvenTree/db.sqlite3 + invoke migrate + + - name: 0.11.0 Database + run: | + rm /home/runner/work/InvenTree/db.sqlite3 + cp test-db/stable_0.11.0.sqlite3 /home/runner/work/InvenTree/db.sqlite3 + chmod +rw /home/runner/work/InvenTree/db.sqlite3 + invoke migrate