Merge branch 'feature/develop_ci' into 'develop'

Feature/develop ci

See merge request gm/gm-backend!70
This commit is contained in:
d.kuzmenko 2019-10-24 13:23:00 +00:00
commit f484219ec7
6 changed files with 225 additions and 1 deletions

4
.gitignore vendored
View File

@ -21,4 +21,6 @@ logs/
/geoip_db/
# dev
./docker-compose.override.yml
./docker-compose.override.yml
celerybeat-schedule

40
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,40 @@
image: docker:latest
stages:
- build
- test
- deploy
- clean
clean:
stage: clean
script:
- docker-compose -f compose-ci.yml stop
- docker-compose -f compose-ci.yml rm --force gm_app
when: always
buid:
stage: build
script:
- docker-compose -f compose-ci.yml build gm_app
when: always
test:
stage: test
script:
- docker-compose -f compose-ci.yml run gm_app python manage.py test -v 3 --noinput
when: always
deploy-develop:
stage: deploy
only:
- develop
script:
- fab --roles=develop deploy
environment:
name: Develop

View File

@ -0,0 +1,14 @@
# Generated by Django 2.2.4 on 2019-10-24 12:33
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('account', '0016_auto_20191024_0830'),
('account', '0016_auto_20191024_0833'),
]
operations = [
]

View File

@ -0,0 +1,20 @@
# Generated by Django 2.2.4 on 2019-10-24 13:13
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('main', '0022_auto_20191023_1113'),
('establishment', '0042_establishment_tz'),
]
operations = [
migrations.AddField(
model_name='establishment',
name='currency',
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.PROTECT, to='main.Currency', verbose_name='currency'),
),
]

79
compose-ci.yml Normal file
View File

@ -0,0 +1,79 @@
version: '2'
services:
db:
build:
context: ./_dockerfiles/db
dockerfile: Dockerfile
hostname: db
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=postgres
ports:
- "5436:5432"
elasticsearch:
image: elasticsearch:7.3.1
hostname: elasticsearch
ports:
- 9200:9200
- 9300:9300
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.type=single-node
- xpack.security.enabled=false
# Redis
redis:
image: redis:2.8.23
ports:
- "6379:6379"
# Celery
worker:
build: .
command: ./run_celery.sh
environment:
- SETTINGS_CONFIGURATION=local
- DB_NAME=postgres
- DB_USERNAME=postgres
- DB_HOSTNAME=db
- DB_PORT=5432
- DB_PASSWORD=postgres
links:
- db
- redis
worker_beat:
build: .
command: ./run_celery_beat.sh
environment:
- SETTINGS_CONFIGURATION=local
- DB_NAME=postgres
- DB_USERNAME=postgres
- DB_HOSTNAME=db
- DB_PORT=5432
- DB_PASSWORD=postgres
links:
- db
- redis
# App: G&M
gm_app:
build: .
command: python manage.py runserver 0.0.0.0:8000
environment:
- SETTINGS_CONFIGURATION=local
- DB_HOSTNAME=db
- DB_PORT=5432
- DB_NAME=postgres
- DB_USERNAME=postgres
- DB_PASSWORD=postgres
depends_on:
- db
- redis
- worker
- worker_beat
- elasticsearch
ports:
- "8000:8000"

69
fabfile.py vendored Normal file
View File

@ -0,0 +1,69 @@
import os # NOQA
from fabric.api import * # NOQA
user = 'gm'
env.roledefs = {
'develop': {
'branch': 'develop',
'hosts': ['%s@95.213.204.126' % user, ]
}
}
env.root = '~/'
env.src = '~/project'
env.default_branch = 'develop'
env.tmpdir = '~/tmp'
def fetch(branch=None):
with cd(env.src):
role = env.roles[0]
run('git pull origin {}'.format(env.roledefs[role]['branch']))
def migrate():
with cd(env.src):
run('./manage.py migrate')
def install_requirements():
with cd(env.src):
run('pip install -r requirements/base.txt')
def touch():
with cd(env.src):
run('touch ~/%s.touch' % user)
def kill_celery():
"""Kill celery workers for $user."""
with cd(env.src):
run('ps -u %s -o pid,fname | grep celery | (while read a b; do kill -9 $a; done;)' % user)
def collectstatic():
with cd(env.src):
run('./manage.py collectstatic --noinput')
def deploy(branch=None):
fetch()
install_requirements()
migrate()
collectstatic()
touch()
kill_celery()
def rev():
"""Show head commit."""
with hide('running', 'stdout'):
with cd(env.src):
commit = run('git rev-parse HEAD')
return local('git show -q %s' % commit)