From 858f17c09c6cd5b74e1ea60e4acf98d780dc15bb Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 2 May 2023 12:16:25 +0100 Subject: [PATCH 01/11] misc: add migration check when models are modified --- .github/workflows/run_tests.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index f6d4438f..de377e86 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -64,6 +64,15 @@ jobs: - name: Load Docker images from previous workflows run: docker load --input /tmp/myimage.tar + - name: Check migrations for changes in models + if: contains(github.event_path == 'models.py') + run: | + docker run --network host \ + -e SURF_DATABASE_URL=${{ matrix.database.url }} \ + -v $(pwd)/cov/:/report \ + ghcr.io/${{ github.repository }}:${{ inputs.build-tag }} \ + sh -c 'manage.py makemigrations --dry-run' + - name: run tests run: | docker run --network host \ From feadbb6f85299a674194746d76dbf081fc2b7990 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 2 May 2023 13:10:32 +0100 Subject: [PATCH 02/11] fixup: fix if regex --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index de377e86..00de3557 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -65,7 +65,7 @@ jobs: run: docker load --input /tmp/myimage.tar - name: Check migrations for changes in models - if: contains(github.event_path == 'models.py') + if: github.event_path == /models.*\.py run: | docker run --network host \ -e SURF_DATABASE_URL=${{ matrix.database.url }} \ From a2741b70803240c89836f088ae52614ebe087424 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 2 May 2023 13:11:50 +0100 Subject: [PATCH 03/11] fixup: typo in equal sign --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 00de3557..5ce4cf3a 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -65,7 +65,7 @@ jobs: run: docker load --input /tmp/myimage.tar - name: Check migrations for changes in models - if: github.event_path == /models.*\.py + if: github.event_path =~ /models.*\.py run: | docker run --network host \ -e SURF_DATABASE_URL=${{ matrix.database.url }} \ From fcff9337f02f5b715c3ec1cfd070297b91932df5 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 2 May 2023 13:12:56 +0100 Subject: [PATCH 04/11] fixup: fix if in workflows --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 5ce4cf3a..f802117a 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -65,7 +65,7 @@ jobs: run: docker load --input /tmp/myimage.tar - name: Check migrations for changes in models - if: github.event_path =~ /models.*\.py + if: github.event.path =~ /models.*\.py/ run: | docker run --network host \ -e SURF_DATABASE_URL=${{ matrix.database.url }} \ From e2e83877ca5bbee7392cafeb078977b657dcf7cd Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 2 May 2023 14:18:28 +0100 Subject: [PATCH 05/11] fixup: remove if condition - always run check --- .github/workflows/run_tests.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index f802117a..03155082 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -65,7 +65,6 @@ jobs: run: docker load --input /tmp/myimage.tar - name: Check migrations for changes in models - if: github.event.path =~ /models.*\.py/ run: | docker run --network host \ -e SURF_DATABASE_URL=${{ matrix.database.url }} \ From d17bc087d279b815a52ec0d88f367083a6bbf01b Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 2 May 2023 14:20:12 +0100 Subject: [PATCH 06/11] fixup: add --check to fail when there are migrations to apply --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 03155082..d5e52179 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -70,7 +70,7 @@ jobs: -e SURF_DATABASE_URL=${{ matrix.database.url }} \ -v $(pwd)/cov/:/report \ ghcr.io/${{ github.repository }}:${{ inputs.build-tag }} \ - sh -c 'manage.py makemigrations --dry-run' + sh -c 'manage.py makemigrations --dry-run --check' - name: run tests run: | From 91d5101d51719a267f1bec2bbe1a82a5b775406a Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 2 May 2023 14:31:00 +0100 Subject: [PATCH 07/11] fixup: proper manage.py invocation --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index d5e52179..299971e2 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -70,7 +70,7 @@ jobs: -e SURF_DATABASE_URL=${{ matrix.database.url }} \ -v $(pwd)/cov/:/report \ ghcr.io/${{ github.repository }}:${{ inputs.build-tag }} \ - sh -c 'manage.py makemigrations --dry-run --check' + sh -c './manage.py makemigrations --dry-run --check' - name: run tests run: | From 092ac60eb12eae0faf2cc1b90489f2346c7ba58b Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 2 May 2023 15:00:48 +0100 Subject: [PATCH 08/11] misc: bump django-dkron to avoid migration issues --- surface/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/surface/requirements.txt b/surface/requirements.txt index 200ffb46..5f8245fc 100644 --- a/surface/requirements.txt +++ b/surface/requirements.txt @@ -18,7 +18,7 @@ django-surface-theme==0.0.8 django-dbcleanup==0.1.3 django-logbasecommand==0.0.1 django-notification-sender[slack]==0.0.4 -django-dkron==1.1.0 +django-dkron==1.1.1 django-slack-processor==0.0.4 django-olympus==0.0.3 django-environ-ppb[vault]==1.0.0 From 707e3a8ba5c8d3f376d11eac507bc326ab2106e5 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 2 May 2023 15:09:14 +0100 Subject: [PATCH 09/11] fixup: run migration check with pre-commit --- .pre-commit-config.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d40a8a74..2d3663e7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,3 +13,11 @@ repos: hooks: - id: ruff args: ["--fix"] + - repo: local + hooks: + - id: migration-check + name: migration-check + entry: python surface/manage.py makemigrations --check --dry-run + language: system + files: models.*\.py$ + pass_filenames: false From 7b6b78f1fd3eb6759a21838992b078a2e5b15bd9 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Fri, 12 May 2023 11:00:01 +0100 Subject: [PATCH 10/11] fixup: add migration checker to before matrix So it only runs once, without needing to run through all cases in the matrix. --- .github/workflows/run_tests.yml | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 299971e2..6eca4d16 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -24,6 +24,28 @@ jobs: - name: Style check run : make style_check + migration_check: + runs-on: ubuntu-latest + services: + mysql: + image: mysql:8 + ports: + - 8877:3306 + # needed because the container does not provide a healthcheck + options: --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries=5 -e MYSQL_ROOT_PASSWORD=root --entrypoint sh mysql -c "exec docker-entrypoint.sh mysqld --default-authentication-plugin=mysql_native_password" + steps: + - name: Download artifacts (Docker images) from previous workflows + uses: actions/download-artifact@v3 + with: + name: surface-tests + path: /tmp + - name: Check for not-migrated changes in models + run: | + docker run --network host \ + -e SURF_DATABASE_URL="mysql://root:root@127.0.0.1:8877/surface" \ + ghcr.io/${{ github.repository }}:${{ inputs.build-tag }} \ + sh -c './manage.py makemigrations --dry-run --check' + pytest: runs-on: ubuntu-latest strategy: @@ -64,14 +86,6 @@ jobs: - name: Load Docker images from previous workflows run: docker load --input /tmp/myimage.tar - - name: Check migrations for changes in models - run: | - docker run --network host \ - -e SURF_DATABASE_URL=${{ matrix.database.url }} \ - -v $(pwd)/cov/:/report \ - ghcr.io/${{ github.repository }}:${{ inputs.build-tag }} \ - sh -c './manage.py makemigrations --dry-run --check' - - name: run tests run: | docker run --network host \ From f9ffc41fb5f9bf08e036acee58741ee52d31642e Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Fri, 12 May 2023 11:12:03 +0100 Subject: [PATCH 11/11] fixup: forgot to load docker image --- .github/workflows/run_tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 6eca4d16..77eda3f2 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -39,6 +39,8 @@ jobs: with: name: surface-tests path: /tmp + - name: Load Docker images from previous workflows + run: docker load --input /tmp/myimage.tar - name: Check for not-migrated changes in models run: | docker run --network host \