2021-12-11 22:18:48 +05:30
|
|
|
# This example is for testing Django with MySQL.
|
|
|
|
#
|
|
|
|
# The test CI/CD variables MYSQL_DB, MYSQL_USER and MYSQL_PASS can be set in the project settings at:
|
|
|
|
# Settings --> CI/CD --> Variables
|
|
|
|
#
|
|
|
|
# The Django settings in settings.py, used in tests, might look similar to:
|
|
|
|
#
|
|
|
|
# DATABASES = {
|
|
|
|
# 'default': {
|
|
|
|
# 'ENGINE': 'django.db.backends.mysql',
|
|
|
|
# 'NAME': os.environ.get('MYSQL_DATABASE'),
|
|
|
|
# 'USER': os.environ.get('MYSQL_USER'),
|
|
|
|
# 'PASSWORD': os.environ.get('MYSQL_PASSWORD'),
|
|
|
|
# 'HOST': 'mysql',
|
|
|
|
# 'PORT': '3306',
|
|
|
|
# 'CONN_MAX_AGE':60,
|
|
|
|
# },
|
|
|
|
# }
|
|
|
|
#
|
|
|
|
# It is possible to use '--settings' to specify a custom settings file on the command line below or use an environment
|
|
|
|
# variable to trigger an include on the bottom of your settings.py:
|
|
|
|
# if os.environ.get('DJANGO_CONFIG')=='test':
|
|
|
|
# from .settings_test import *
|
|
|
|
#
|
|
|
|
# It is also possible to hardcode the database name and credentials in the settings.py file and in the .gitlab-ci.yml file.
|
|
|
|
#
|
|
|
|
# The mysql service needs some variables too. See https://hub.docker.com/_/mysql for possible mysql env variables
|
|
|
|
# Note that when using a service in GitLab CI/CD that needs environment variables to run, only variables defined in
|
|
|
|
# .gitlab-ci.yml are passed to the service and variables defined in the GitLab UI are not.
|
|
|
|
# https://gitlab.com/gitlab-org/gitlab/-/issues/30178
|
2017-08-17 22:00:37 +05:30
|
|
|
|
|
|
|
variables:
|
2021-12-11 22:18:48 +05:30
|
|
|
# DJANGO_CONFIG: "test"
|
|
|
|
MYSQL_DATABASE: $MYSQL_DB
|
|
|
|
MYSQL_ROOT_PASSWORD: $MYSQL_PASS
|
|
|
|
MYSQL_USER: $MYSQL_USER
|
|
|
|
MYSQL_PASSWORD: $MYSQL_PASS
|
2017-08-17 22:00:37 +05:30
|
|
|
|
2021-12-11 22:18:48 +05:30
|
|
|
default:
|
|
|
|
image: ubuntu:20.04
|
|
|
|
#
|
|
|
|
# Pick zero or more services to be used on all builds.
|
|
|
|
# Only needed when using a docker container to run your tests in.
|
|
|
|
# Check out: http://docs.gitlab.com/ee/ci/docker/using_docker_images.html#what-is-a-service
|
|
|
|
services:
|
|
|
|
- mysql:8.0
|
|
|
|
#
|
|
|
|
# This folder is cached between builds
|
|
|
|
# http://docs.gitlab.com/ee/ci/yaml/README.html#cache
|
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- ~/.cache/pip/
|
|
|
|
before_script:
|
|
|
|
- apt -y update
|
|
|
|
- apt -y install apt-utils
|
|
|
|
- apt -y install net-tools python3.8 python3-pip mysql-client libmysqlclient-dev
|
|
|
|
- apt -y upgrade
|
|
|
|
- pip3 install -r requirements.txt
|
2017-08-17 22:00:37 +05:30
|
|
|
|
|
|
|
|
2021-12-11 22:18:48 +05:30
|
|
|
migrations:
|
|
|
|
stage: build
|
|
|
|
script:
|
|
|
|
- python3 manage.py makemigrations
|
|
|
|
# - python3 manage.py makemigrations myapp
|
|
|
|
- python3 manage.py migrate
|
|
|
|
- python3 manage.py check
|
|
|
|
|
2017-08-17 22:00:37 +05:30
|
|
|
|
2021-12-11 22:18:48 +05:30
|
|
|
django-tests:
|
|
|
|
stage: test
|
2017-08-17 22:00:37 +05:30
|
|
|
script:
|
2021-12-11 22:18:48 +05:30
|
|
|
# The MYSQL user only gets permissions for MYSQL_DB, so Django can't create a test database.
|
|
|
|
- echo "GRANT ALL on *.* to '${MYSQL_USER}';"| mysql -u root --password="${MYSQL_ROOT_PASSWORD}" -h mysql
|
|
|
|
# use python3 explicitly. see https://wiki.ubuntu.com/Python/3
|
|
|
|
- python3 manage.py test
|