From 80cb1b06cb7422cd887f237795b5df76bce07c99 Mon Sep 17 00:00:00 2001 From: Danang Date: Wed, 26 Jun 2024 12:29:34 +0700 Subject: [PATCH] Fix GitHub workflow (#14) * add lint dependency for django_app_test * add coverage test in github workflow * change secret_key import to full import * fix dependency on django_app_test * add codecov config * fix import error core module --- .github/workflows/tests.yaml | 27 ++++++++++++++++++++++++--- Makefile | 21 +++++++++++++++++++++ codecov.yml | 14 ++++++++++++++ django_project/core/settings/base.py | 6 ++++-- 4 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 codecov.yml diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 7c5f16e..dbe5e7e 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -30,6 +30,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} django_app_test: + needs: flake8_py3 name: 'Django App' runs-on: ubuntu-latest env: @@ -64,7 +65,10 @@ jobs: cd ../ make dev make wait-db - make dev-entrypoint + make sleep + make migrate + make npm-install + make build-react make dev-runserver make dev-load-demo-data make sleep @@ -92,5 +96,22 @@ jobs: # path: playwright/ci-test/playwright-report/ # retention-days: 30 - - name: Test backend - run: make dev-test \ No newline at end of file + - name: Run Coverage test + working-directory: deployment + run: | + cat << EOF | docker-compose exec -T dev bash + python manage.py collectstatic --noinput --verbosity 0 + export DJANGO_SETTINGS_MODULE=core.settings.dev && coverage run manage.py test && coverage xml + EOF + docker cp dev:/home/web/django_project/coverage.xml ../coverage.xml + - name: Show Coverage + if: ${{ github.event_name == 'pull_request' }} + uses: orgoro/coverage@v3 + with: + coverageFile: coverage.xml + token: ${{ secrets.GITHUB_TOKEN }} + - name: Upload coverage to codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: true \ No newline at end of file diff --git a/Makefile b/Makefile index b0bf357..f89d8a1 100644 --- a/Makefile +++ b/Makefile @@ -57,6 +57,27 @@ dev-test: @docker-compose exec -T dev python manage.py collectstatic --noinput @docker-compose exec -T dev python manage.py test --keepdb --noinput +npm-install: + @echo + @echo "------------------------------------------------------------------" + @echo "Install frontend dependencies" + @echo "------------------------------------------------------------------" + @docker-compose ${ARGS} exec -T dev npm --prefix /home/web/django_project/frontend install + +migrate: + @echo + @echo "------------------------------------------------------------------" + @echo "Running migration" + @echo "------------------------------------------------------------------" + @docker-compose ${ARGS} exec -T dev python manage.py migrate + +build-react: + @echo + @echo "------------------------------------------------------------------" + @echo "Execute webpack build command" + @echo "------------------------------------------------------------------" + @docker-compose ${ARGS} exec -T dev npm --prefix /home/web/django_project/frontend run build + serve: @echo @echo "------------------------------------------------------------------" diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000..4b3df4b --- /dev/null +++ b/codecov.yml @@ -0,0 +1,14 @@ +coverage: + range: 50..75 + round: down + precision: 2 + status: + project: + default: + target: 80 + changes: false + patch: + default: + threshold: "5%" + ignore: + - "**/migrations/*.py" diff --git a/django_project/core/settings/base.py b/django_project/core/settings/base.py index 25c1959..9ed2534 100644 --- a/django_project/core/settings/base.py +++ b/django_project/core/settings/base.py @@ -80,6 +80,10 @@ # Python dotted path to the WSGI application used by Django's runserver. WSGI_APPLICATION = 'core.wsgi.application' +# import SECRET_KEY into current namespace +# noinspection PyUnresolvedReferences +from core.settings.secret import SECRET_KEY # noqa + TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', @@ -144,5 +148,3 @@ LOGIN_URL = '/account/login/' LOGIN_REDIRECT_URL = '/' - -from .secret import SECRET_KEY # noqa