From 7f34f4784fc71c6611c8f6e5942447049dda4fe2 Mon Sep 17 00:00:00 2001 From: trbs Date: Sat, 3 Apr 2021 00:56:24 +0200 Subject: [PATCH] Gh actions (#1646) use github actions instead of travis --- .github/workflows/compile_catalog.yml | 24 ++++ .github/workflows/linters.yml | 40 +++++++ .github/workflows/precommit.yml | 24 ++++ .github/workflows/pytest.yml | 76 ++++++++++++ .github/workflows/security.yml | 24 ++++ .travis.yml | 162 -------------------------- tests/testapp/settings.py | 4 + tox.ini | 5 +- 8 files changed, 196 insertions(+), 163 deletions(-) create mode 100644 .github/workflows/compile_catalog.yml create mode 100644 .github/workflows/linters.yml create mode 100644 .github/workflows/precommit.yml create mode 100644 .github/workflows/pytest.yml create mode 100644 .github/workflows/security.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/compile_catalog.yml b/.github/workflows/compile_catalog.yml new file mode 100644 index 000000000..5e408784a --- /dev/null +++ b/.github/workflows/compile_catalog.yml @@ -0,0 +1,24 @@ +name: Compile Catalog + +on: + pull_request: + push: + branches: + - main + +jobs: + compile_catalog: + name: Compile Catalog + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Python 3.x + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - run: python -m pip install tox + - name: Compile Catalog + run: tox + env: + TOXENV: compile-catalog diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml new file mode 100644 index 000000000..c20062988 --- /dev/null +++ b/.github/workflows/linters.yml @@ -0,0 +1,40 @@ +name: Linters + +on: + pull_request: + push: + branches: + - main + +jobs: + flake8: + name: flake8 + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Python 3.x + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - run: python -m pip install tox + - name: tox py39-flake8 + run: tox + env: + TOXENV: py39-flake8 + + mypy: + name: mypy + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Python 3.x + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - run: python -m pip install tox + - name: tox mypy + run: tox + env: + TOXENV: mypy diff --git a/.github/workflows/precommit.yml b/.github/workflows/precommit.yml new file mode 100644 index 000000000..85caad922 --- /dev/null +++ b/.github/workflows/precommit.yml @@ -0,0 +1,24 @@ +name: Pre-Commit Checks + +on: + pull_request: + push: + branches: + - main + +jobs: + precommit: + name: precommit + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Python 3.x + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - run: python -m pip install tox + - name: tox precommit + run: tox + env: + TOXENV: precommit diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml new file mode 100644 index 000000000..547af9ad2 --- /dev/null +++ b/.github/workflows/pytest.yml @@ -0,0 +1,76 @@ +name: PyTest + +on: + pull_request: + push: + branches: + - main + +jobs: + pytest: + runs-on: ubuntu-latest + strategy: + fail-fast: false + max-parallel: 4 + matrix: + python-version: + - 3.6 + - 3.7 + - 3.8 + - 3.9 + - pypy3 + tox-django-version: + - "22" + - "30" + - "31" + # GH Actions don't support something like allow-failure ? + # - "master" + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - run: python -m pip install tox + - name: Pytest + run: tox -e py-dj${{ matrix.tox-django-version }} + + pytest-postgresql: + runs-on: ubuntu-latest + services: + postgres: + image: postgres + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: django_extensions_test + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + strategy: + fail-fast: false + max-parallel: 4 + matrix: + python-version: + - 3.9 + tox-django-version: + - "31" + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - run: python -m pip install tox + - name: Pytest + run: tox -e py-dj${{ matrix.tox-django-version }}-postgres + env: + DJANGO_EXTENSIONS_DATABASE_HOST: localhost + DJANGO_EXTENSIONS_DATABASE_USER: postgres + DJANGO_EXTENSIONS_DATABASE_PASSWORD: postgres diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml new file mode 100644 index 000000000..de6fa94e7 --- /dev/null +++ b/.github/workflows/security.yml @@ -0,0 +1,24 @@ +name: Check Security Vulnerabilities + +on: + pull_request: + push: + branches: + - main + +jobs: + safety: + name: safety + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Python 3.x + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - run: python -m pip install tox + - name: safety + run: tox + env: + TOXENV: safety diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ce9c9e164..000000000 --- a/.travis.yml +++ /dev/null @@ -1,162 +0,0 @@ -language: python -os: linux - -jobs: - fast_finish: true - include: - # Misc - - python: 3.9 - env: TOXENV=py39-flake8 - - python: 3.9 - env: TOXENV=precommit - - python: 3.9 - env: TOXENV=safety - - python: 3.9 - env: TOXENV=mypy - - python: 3.9 - env: TOXENV=compile-catalog - # Django 2.2: 3.6, 3.7, 3.8 or 3.9 / PyPy 3.x - - python: 3.6 - env: TOXENV=py36-dj22 - - python: 3.7 - env: TOXENV=py37-dj22 - - python: 3.7 - env: TOXENV=py37-dj22-postgres - services: - - postgresql - - python: 3.7 - env: TOXENV=py37-dj22-mysql - services: - - mysql - - python: 3.8 - env: TOXENV=py38-dj22 - - python: 3.8 - env: TOXENV=py38-dj22-postgres - services: - - postgresql - - python: 3.8 - env: TOXENV=py38-dj22-mysql - services: - - mysql - - python: 3.9 - env: TOXENV=py38-dj22 - - python: 3.9 - env: TOXENV=py38-dj22-postgres - services: - - postgresql - - python: 3.9 - env: TOXENV=py38-dj22-mysql - services: - - mysql - - python: pypy3 - env: TOXENV=pypy3-dj22 - # Django 3.0: Python 3.6, 3.7 or 3.8 / PyPy 3.x - - python: 3.6 - env: TOXENV=py36-dj30 - - python: 3.7 - env: TOXENV=py37-dj30 - - python: 3.7 - env: TOXENV=py37-dj30-postgres - services: - - postgresql - - python: 3.7 - env: TOXENV=py37-dj30-mysql - services: - - mysql - - python: 3.8 - env: TOXENV=py38-dj30 - - python: 3.8 - env: TOXENV=py38-dj30-postgres - services: - - postgresql - - python: 3.8 - env: TOXENV=py38-dj30-mysql - services: - - mysql - - python: pypy3 - env: TOXENV=pypy3-dj30 - # Django 3.1: Python 3.6, 3.7, 3.8 or 3.9 / PyPy 3.x - - python: 3.6 - env: TOXENV=py36-dj31 - - python: 3.7 - env: TOXENV=py37-dj31 - - python: 3.7 - env: TOXENV=py37-dj31-postgres - services: - - postgresql - - python: 3.7 - env: TOXENV=py37-dj31-mysql - services: - - mysql - - python: 3.8 - env: TOXENV=py38-dj31 - - python: 3.8 - env: TOXENV=py38-dj31-postgres - services: - - postgresql - - python: 3.8 - env: TOXENV=py38-dj31-mysql - services: - - mysql - - python: 3.9 - env: TOXENV=py38-dj31 - - python: 3.9 - env: TOXENV=py38-dj31-postgres - services: - - postgresql - - python: 3.9 - env: TOXENV=py38-dj31-mysql - services: - - mysql - - python: pypy3 - env: TOXENV=pypy3-dj31 - # Django master: Python 3.6, 3.7, 3.8 or 3.9 / PyPy 3.x - - python: 3.6 - env: TOXENV=py36-djmaster - - python: 3.7 - env: TOXENV=py37-djmaster - - python: 3.7 - env: TOXENV=py37-djmaster-postgres - services: - - postgresql - - python: 3.8 - env: TOXENV=py38-djmaster - - python: 3.8 - env: TOXENV=py38-djmaster-postgres - services: - - postgresql - - python: 3.9 - env: TOXENV=py38-djmaster - - python: 3.9 - env: TOXENV=py38-djmaster-postgres - services: - - postgresql - - python: pypy3 - env: TOXENV=pypy3-djmaster - - allow_failures: - - python: 3.6 - env: TOXENV=py36-djmaster - - python: 3.7 - env: TOXENV=py37-djmaster - - python: 3.7 - env: TOXENV=py37-djmaster-postgres - - python: 3.8 - env: TOXENV=py38-djmaster - - python: 3.8 - env: TOXENV=py38-djmaster-postgres - - python: 3.9 - env: TOXENV=py39-djmaster - - python: 3.9 - env: TOXENV=py39-djmaster-postgres - - python: pypy3 - env: TOXENV=pypy3-djmaster - -install: - - pip install virtualenv tox coveralls - -script: - - tox - -after_success: - - coveralls diff --git a/tests/testapp/settings.py b/tests/testapp/settings.py index 492445728..a8046748a 100644 --- a/tests/testapp/settings.py +++ b/tests/testapp/settings.py @@ -34,6 +34,10 @@ 'default': { 'ENGINE': os.environ.get('DJANGO_EXTENSIONS_DATABASE_ENGINE', 'django.db.backends.sqlite3'), 'NAME': os.environ.get('DJANGO_EXTENSIONS_DATABASE_NAME', ':memory:'), + 'USER': os.environ.get("DJANGO_EXTENSIONS_DATABASE_USER"), + 'PASSWORD': os.environ.get("DJANGO_EXTENSIONS_DATABASE_PASSWORD"), + 'HOST': os.environ.get('DJANGO_EXTENSIONS_DATABASE_HOST'), + 'PORT': os.environ.get('DJANGO_EXTENSIONS_DATABASE_PORT'), } } diff --git a/tox.ini b/tox.ini index 02e6db89c..43bf913f5 100644 --- a/tox.ini +++ b/tox.ini @@ -24,6 +24,9 @@ passenv = DJANGO_EXTENSIONS_DATABASE_ENGINE DJANGO_EXTENSIONS_DATABASE_NAME DJANGO_EXTENSIONS_DATABASE_USER + DJANGO_EXTENSIONS_DATABASE_PASSWORD + DJANGO_EXTENSIONS_DATABASE_HOST + DJANGO_EXTENSIONS_DATABASE_PORT setenv = postgres: DJANGO_EXTENSIONS_DATABASE_ENGINE = {env:DJANGO_EXTENSIONS_DATABASE_ENGINE:django.db.backends.postgresql} @@ -36,7 +39,7 @@ deps = dj22: Django==2.2 dj30: Django>=3.0,<3.1 dj31: Django>=3.1,<3.2 - djmaster: https://github.com/django/django/archive/master.tar.gz + djmaster: https://github.com/django/django/archive/refs/heads/main.zip postgres: psycopg2-binary mysql: mysqlclient