Seperate out postgres tests and clarify postgres support (#1494)

* Clarifies the position on supporting Postgres and removes Postgres from the main test suite
* Closes #973
This commit is contained in:
Kevin Chung
2020-06-17 03:14:47 -04:00
committed by GitHub
parent 717da5cecb
commit 0c43e2dd0a
6 changed files with 138 additions and 18 deletions

33
.github/workflows/lint.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
---
name: Linting
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.6']
TESTING_DATABASE_URL: ['sqlite://']
name: Linting
steps:
- uses: actions/checkout@v2
- name: Setup python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r development.txt
sudo yarn install --non-interactive
sudo yarn global add prettier@1.17.0
- name: Lint
run: make lint

53
.github/workflows/mysql.yml vendored Normal file
View File

@@ -0,0 +1,53 @@
---
name: CTFd MySQL CI
on: [pull_request]
jobs:
build:
runs-on: ubuntu-latest
services:
mysql:
image: mysql
ports:
- 3306:3306
redis:
image: redis
ports:
- 6379:6379
strategy:
matrix:
python-version: ['3.6']
TESTING_DATABASE_URL: ['mysql+pymysql://root@localhost/ctfd']
name: Python ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v2
- name: Setup python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r development.txt
sudo yarn install --non-interactive
sudo yarn global add prettier@1.17.0
- name: Lint
run: make lint
- name: Test
run: |
sudo rm -f /etc/boto.cfg
make test
env:
AWS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
- name: Coverage
run: codecov

View File

@@ -1,7 +1,7 @@
---
name: CTFd CI
name: CTFd Postgres CI
on: [push, pull_request]
on: [pull_request]
jobs:
build:
@@ -21,10 +21,6 @@ jobs:
--health-interval 10s
--health-timeout 5s
--health-retries 5
mysql:
image: mysql
ports:
- 3306:3306
redis:
image: redis
ports:
@@ -33,7 +29,7 @@ jobs:
strategy:
matrix:
python-version: ['3.6']
TESTING_DATABASE_URL: ['mysql+pymysql://root@localhost/ctfd', 'sqlite://', 'postgres://postgres@localhost/ctfd']
TESTING_DATABASE_URL: ['postgres://postgres@localhost/ctfd']
name: Python ${{ matrix.python-version }}
steps:
@@ -47,11 +43,6 @@ jobs:
run: |
python -m pip install --upgrade pip
python -m pip install -r development.txt
sudo yarn install --non-interactive
sudo yarn global add prettier@1.17.0
- name: Lint
run: make lint
- name: Test
run: |

44
.github/workflows/sqlite.yml vendored Normal file
View File

@@ -0,0 +1,44 @@
---
name: CTFd SQLite CI
on: [pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.6']
TESTING_DATABASE_URL: ['sqlite://']
name: Python ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v2
- name: Setup python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r development.txt
sudo yarn install --non-interactive
sudo yarn global add prettier@1.17.0
- name: Lint
run: make lint
- name: Test
run: |
sudo rm -f /etc/boto.cfg
make test
env:
AWS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
- name: Coverage
run: codecov

View File

@@ -5,7 +5,6 @@ cache:
- yarn
services:
- mysql
- postgresql
- redis-server
addons:
apt:
@@ -17,7 +16,6 @@ addons:
env:
- TESTING_DATABASE_URL='mysql+pymysql://root@localhost/ctfd'
- TESTING_DATABASE_URL='sqlite://'
- TESTING_DATABASE_URL='postgres://postgres@localhost/ctfd'
python:
- 3.6
before_install:
@@ -28,8 +26,6 @@ install:
- pip install -r development.txt
- yarn install --non-interactive
- yarn global add prettier@1.17.0
before_script:
- psql -c 'create database ctfd;' -U postgres
script:
- make lint
- make test

View File

@@ -53,12 +53,15 @@ While CTFd is a standard WSGI application and most WSGI servers (e.g. gunicorn,
Database Server
~~~~~~~~~~~~~~~
CTFd makes use of SQLAlchemy and as such supports a number of SQL databases. As of CTFd 2.0, the recommended database type is MySQL. CTFd is tested and has been installed against SQLite, Postgres, and MariaDB but this could change in the future.
CTFd makes use of SQLAlchemy and as such supports a number of SQL databases. The recommended database type is MySQL. CTFd is tested with and has been installed against SQLite, Postgres, and MariaDB.
By default CTFd will create a SQLite database if no database server has been configured.
.. Note::
CTFd makes use of the JSON data type. MySQL >= 5.7.8 implements a proper JSON type while MariaDB does not. Small differences like these could eventually result in CTFd only supporting a few database servers.
CTFd makes use of the JSON data type which your database backend must support.
.. Note::
CTFd is typicaly used with MySQL, MariaDB, or SQLite. Using CTFd with Postgres is uncommon and could be deprecated in any version. Even though Postgres may be part of the CTFd test suite, using Postgres as your database backend is at your own peril. Any issues raised regarding Postgres support will carry the expectation that the issue author write an accompanying pull request to resolve said issue.
Caching Server
~~~~~~~~~~~~~~