summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/templates/Django.gitlab-ci.yml
blob: acc4a9d29172f7489a930b9805d237902597f107 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 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

variables:
  # DJANGO_CONFIG: "test"
  MYSQL_DATABASE: $MYSQL_DB
  MYSQL_ROOT_PASSWORD: $MYSQL_PASS
  MYSQL_USER: $MYSQL_USER
  MYSQL_PASSWORD: $MYSQL_PASS

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: https://docs.gitlab.com/ee/ci/services/index.html
  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


migrations:
  stage: build
  script:
    - python3 manage.py makemigrations
    # - python3 manage.py makemigrations myapp
    - python3 manage.py migrate
    - python3 manage.py check


django-tests:
  stage: test
  script:
    # 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