strategy:
matrix:
python: [3.6, 3.7, 3.8, 3.9]
- db: [postgres, mysql]
+ db: [postgres, mysql, sqlite3]
env:
DATABASE_TYPE: "${{ matrix.db }}"
DATABASE_HOST: "127.0.0.1"
- DATABASE_NAME: patchwork
+ DATABASE_NAME: ${{ matrix.db != 'sqlite3' && 'patchwork' || '/dev/shm/patchwork.test.db.sqlite3' }}
DATABASE_USER: patchwork
DATABASE_PASSWORD: password
MYSQL_ROOT_PASSWORD: root
runs-on: ubuntu-latest
strategy:
matrix:
- db: [postgres, mysql]
+ db: [postgres, mysql, sqlite3]
env:
- COMPOSE_FILE: ${{ matrix.db == 'mysql' && 'docker-compose.yml' || 'docker-compose-pg.yml' }}
+ COMPOSE_FILE: ${{ matrix.db == 'mysql' && 'docker-compose.yml' || (matrix.db == 'postgres' && 'docker-compose-pg.yml') || 'docker-compose-sqlite3.yml' }}
steps:
- name: Checkout source code
uses: actions/checkout@v2
--- /dev/null
+version: "3"
+services:
+ web:
+ build:
+ context: .
+ dockerfile: ./tools/docker/Dockerfile
+ args:
+ - UID
+ - GID
+ command: python3 manage.py runserver 0.0.0.0:8000
+ volumes:
+ - .:/home/patchwork/patchwork/
+ ports:
+ - "8000:8000"
+ environment:
+ - UID
+ - GID
+ - DATABASE_TYPE=sqlite3
+ - DATABASE_NAME=/home/patchwork/patchwork/tools/docker/db/db.sqlite3
export DATABASE_HOST=${DATABASE_HOST:-}
export DATABASE_PORT=${DATABASE_PORT:-}
-export DATABASE_NAME=${DATABASE_NAME:-patchwork}
export DATABASE_USER=${DATABASE_USER:-patchwork}
export DATABASE_PASSWORD=${DATABASE_PASSWORD:-password}
case "${DATABASE_TYPE:-}" in
postgres)
+ export DATABASE_NAME=${DATABASE_NAME:-patchwork}
export PGPORT=${DATABASE_PORT}
export PGPASSWORD=${DATABASE_PASSWORD}
psql_args=( ${DATABASE_HOST:+--host=${DATABASE_HOST}} "--username=${DATABASE_USER}" )
;;
+sqlite3)
+ export DATABASE_NAME=${DATABASE_NAME:-/dev/shm/patchwork.db.sqlite3}
+ ;;
*)
export DATABASE_TYPE=mysql
+ export DATABASE_NAME=${DATABASE_NAME:-patchwork}
mysql_args=( ${DATABASE_HOST:+--host=${DATABASE_HOST}} ${DATABASE_PORT:+--port=${DATABASE_PORT}} "--user=${DATABASE_USER}" "--password=${DATABASE_PASSWORD}" )
;;
esac
# functions
test_database() {
- if [ ${DATABASE_TYPE} = "postgres" ]; then
- echo ';' | psql "${psql_args[@]}" "${DATABASE_NAME}" 2> /dev/null
- else
- echo ';' | mysql "${mysql_args[@]}" "${DATABASE_NAME}" 2> /dev/null
- fi
+ case "${DATABASE_TYPE}" in
+ "postgres")
+ echo ';' | psql "${psql_args[@]}" "${DATABASE_NAME}" 2> /dev/null ;;
+ "mysql")
+ echo ';' | mysql "${mysql_args[@]}" "${DATABASE_NAME}" 2> /dev/null ;;
+ "sqlite3")
+ echo ';' | sqlite3 "${DATABASE_NAME}" > /dev/null 2> /dev/null ;;
+ esac
}
# the script begins!