aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml132
-rw-r--r--Dockerfile1
-rw-r--r--Pipfile2
-rw-r--r--Pipfile.lock67
-rw-r--r--SETUP.md1
-rw-r--r--api/admin.py2
-rw-r--r--docker/base.Dockerfile18
-rw-r--r--home/admin.py2
-rw-r--r--home/models.py2
-rw-r--r--home/views.py2
-rw-r--r--pysite/hosts.py8
-rw-r--r--pysite/settings.py10
-rwxr-xr-xscripts/deploy-ci.sh19
-rw-r--r--wiki/admin.py2
-rw-r--r--wiki/models.py2
-rw-r--r--wiki/tests.py2
-rw-r--r--wiki/views.py2
17 files changed, 157 insertions, 117 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 58daa222..c6eaac3d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,79 +1,65 @@
-image: pythondiscord/site-ci:latest
-
-variables:
- RABBITMQ_HOST: rabbit
- RETHINKDB_HOST: rethinkdb
-
stages:
-# - build
- - test
-# - deploy
-#
-#build:
-# before_script:
-# - docker info
-#
-# image: docker:stable-git
-#
-# only:
-# - master
-#
-# services:
-# - docker:dind
-#
-# stage: build
-#
-# script:
-# - sh scripts/deploy-ci.sh
-#
-# tags:
-# - docker
-#
-# variables:
-# DOCKER_DRIVER: overlay2
+ - build
+ - lint
+ - test
+ - deploy
-test:
- tags:
- - docker
+cache:
+ paths:
+ - .cache/
- stage: test
- services:
- - name: postgres
-# - name: rabbitmq:3.7.5-alpine
-# alias: rabbit
-#
-# - name: rethinkdb:2.3.6
-# alias: rethinkdb
+variables:
+ PIPENV_CACHE_DIR: "$CI_PROJECT_DIR/.cache"
- cache:
- paths:
- - ".venv"
- - ".gem"
+build base image:
+ image: docker:stable-git
+ stage: build
+ script:
+ - sh scripts/deploy-ci.sh
+ tags:
+ - docker
+ only:
+ - master
+ - django
- script:
- - pipenv sync --dev
+lint:
+ image: registry.gitlab.com/python-discord/projects/site/django-base:latest
+ stage: lint
+ script:
+ - pipenv install --dev --system
+ - flake8
+
+test:
+ image: registry.gitlab.com/python-discord/projects/site/django-base:latest
+ stage: test
+ services:
+ - postgres:10-alpine
+ before_script:
+ - python manage.py migrate
+ - pip install coverage
+ script:
+ - coverage run --source=api,home,pysite,wiki --branch manage.py test
+ after_script:
+ - coverage report
+ artifacts:
+ paths:
+ - .coverage
+ variables:
+ DATABASE_URL: postgres://django:supersecret@postgres/pysite
+ POSTGRES_DB: pysite
+ POSTGRES_PASSWORD: supersecret
+ POSTGRES_USER: django
- - pipenv run lint
-# - pipenv run lintjs
-# - pipenv run lintscss
-#
-# - pipenv run python gunicorn_config.py
-# - pipenv run test
-#
-#deploy:
-# tags:
-# - docker
-#
-# only:
-# - master
-#
-# services:
-# - docker:dind
-#
-# stage: deploy
-# script:
-# - sh scripts/deploy.sh
-#
-# environment:
-# name: Production
-# url: https://pythondiscord.com
+pages:
+ stage: deploy
+ image:
+ dependencies:
+ - test
+ before_script:
+ - pip install coverage
+ script:
+ - coverage html --directory=public
+ artifacts:
+ paths:
+ - public
+ expire_in: 30 days
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..c4489027
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1 @@
+FROM registry.gitlab.com/python-discord/projects/site/django-base:latest
diff --git a/Pipfile b/Pipfile
index 8a019869..d3b340ab 100644
--- a/Pipfile
+++ b/Pipfile
@@ -17,7 +17,7 @@ djangorestframework = "*"
"flake8-import-order" = "*"
"flake8-tidy-imports" = "*"
"flake8-string-format" = "*"
-libsass = "*"
+coverage = "*"
[requires]
python_version = "3.7"
diff --git a/Pipfile.lock b/Pipfile.lock
index 647516ac..2feb2cb4 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
- "sha256": "8fee16876d03bf40515412046685b94bab4153c6e691e3837908cec81fa29689"
+ "sha256": "cc8270991baaef694efa7678b651fb4a7b97274cd2acb0a8bd41b7291a1203b1"
},
"pipfile-spec": 6,
"requires": {
@@ -102,10 +102,47 @@
},
"bandit": {
"hashes": [
- "sha256:cb977045497f83ec3a02616973ab845c829cdab8144ce2e757fe031104a9abd4",
- "sha256:de4cc19d6ba32d6f542c6a1ddadb4404571347d83ef1ed1e7afb7d0b38e0c25b"
+ "sha256:45bf1b361004e861e5b423b36ff5c700d21442753c841013c87f14a4639b1d74",
+ "sha256:a3aa04802194ec1fd290849e02b915824f9c3234623d7dcea6a33b1605ddb0ac"
],
- "version": "==1.4.0"
+ "version": "==1.5.0"
+ },
+ "coverage": {
+ "hashes": [
+ "sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba",
+ "sha256:0b136648de27201056c1869a6c0d4e23f464750fd9a9ba9750b8336a244429ed",
+ "sha256:10a46017fef60e16694a30627319f38a2b9b52e90182dddb6e37dcdab0f4bf95",
+ "sha256:198626739a79b09fa0a2f06e083ffd12eb55449b5f8bfdbeed1df4910b2ca640",
+ "sha256:23d341cdd4a0371820eb2b0bd6b88f5003a7438bbedb33688cd33b8eae59affd",
+ "sha256:28b2191e7283f4f3568962e373b47ef7f0392993bb6660d079c62bd50fe9d162",
+ "sha256:2a5b73210bad5279ddb558d9a2bfedc7f4bf6ad7f3c988641d83c40293deaec1",
+ "sha256:2eb564bbf7816a9d68dd3369a510be3327f1c618d2357fa6b1216994c2e3d508",
+ "sha256:337ded681dd2ef9ca04ef5d93cfc87e52e09db2594c296b4a0a3662cb1b41249",
+ "sha256:3a2184c6d797a125dca8367878d3b9a178b6fdd05fdc2d35d758c3006a1cd694",
+ "sha256:3c79a6f7b95751cdebcd9037e4d06f8d5a9b60e4ed0cd231342aa8ad7124882a",
+ "sha256:3d72c20bd105022d29b14a7d628462ebdc61de2f303322c0212a054352f3b287",
+ "sha256:3eb42bf89a6be7deb64116dd1cc4b08171734d721e7a7e57ad64cc4ef29ed2f1",
+ "sha256:4635a184d0bbe537aa185a34193898eee409332a8ccb27eea36f262566585000",
+ "sha256:56e448f051a201c5ebbaa86a5efd0ca90d327204d8b059ab25ad0f35fbfd79f1",
+ "sha256:5a13ea7911ff5e1796b6d5e4fbbf6952381a611209b736d48e675c2756f3f74e",
+ "sha256:69bf008a06b76619d3c3f3b1983f5145c75a305a0fea513aca094cae5c40a8f5",
+ "sha256:6bc583dc18d5979dc0f6cec26a8603129de0304d5ae1f17e57a12834e7235062",
+ "sha256:701cd6093d63e6b8ad7009d8a92425428bc4d6e7ab8d75efbb665c806c1d79ba",
+ "sha256:7608a3dd5d73cb06c531b8925e0ef8d3de31fed2544a7de6c63960a1e73ea4bc",
+ "sha256:76ecd006d1d8f739430ec50cc872889af1f9c1b6b8f48e29941814b09b0fd3cc",
+ "sha256:7aa36d2b844a3e4a4b356708d79fd2c260281a7390d678a10b91ca595ddc9e99",
+ "sha256:7d3f553904b0c5c016d1dad058a7554c7ac4c91a789fca496e7d8347ad040653",
+ "sha256:7e1fe19bd6dce69d9fd159d8e4a80a8f52101380d5d3a4d374b6d3eae0e5de9c",
+ "sha256:8c3cb8c35ec4d9506979b4cf90ee9918bc2e49f84189d9bf5c36c0c1119c6558",
+ "sha256:9d6dd10d49e01571bf6e147d3b505141ffc093a06756c60b053a859cb2128b1f",
+ "sha256:be6cfcd8053d13f5f5eeb284aa8a814220c3da1b0078fa859011c7fffd86dab9",
+ "sha256:c1bb572fab8208c400adaf06a8133ac0712179a334c09224fb11393e920abcdd",
+ "sha256:de4418dadaa1c01d497e539210cb6baa015965526ff5afc078c57ca69160108d",
+ "sha256:e05cb4d9aad6233d67e0541caa7e511fa4047ed7750ec2510d466e806e0255d6",
+ "sha256:f3f501f345f24383c0000395b26b726e46758b71393267aeae0bd36f8b3ade80"
+ ],
+ "index": "pypi",
+ "version": "==4.5.1"
},
"flake8": {
"hashes": [
@@ -176,28 +213,6 @@
],
"version": "==2.1.11"
},
- "libsass": {
- "hashes": [
- "sha256:0f2e421d3e5a53833243e0a5f2cf7ebe9812725a7f27a797c38f3c7190ce2a82",
- "sha256:1b74aff85f1560d629a070552ec67f9f0ff9a47446ffafddafad9944f7589ae1",
- "sha256:1cf80c04a77d36fd77f00b1ae0a269eee780d971fabd9d493b15d30de9857ae5",
- "sha256:1d55dfe8e91a15a7d72d7f8aca16e74da36899e70d911af66d7184f1c82e2b39",
- "sha256:23755425149fe0f576fd0ab7bcd151fe09400b2d980fe176c28f6c19e053c830",
- "sha256:4a434d5b713b97c4141fb71c59341d4ebff8669114b14c626af51e145a48710e",
- "sha256:4dcd5b546bed977276f97eb7a2a13cb7cbf0a38d672e7b5525b7587c8cabcf27",
- "sha256:62771c8ead9227579891814dd714be645243741aa23e5cb232ac0c245cf29a37",
- "sha256:727fb84326ffa930bc09fad8b706e77ada4d13b3adf35cce134962a434d7eccb",
- "sha256:7b9e7179b5f4fc32bc716f86e9ccaeb48ab90e7eb6648b339440346733af8828",
- "sha256:a0ffca466b35fb57f2afe1f1c5fd39b4c51a4107596d28ef8c0d3bb0962244b5",
- "sha256:bb9735066391189b3c0383254d20d59aaafb438d632d7de551c264f16486e773",
- "sha256:cbd5ee83d3603a2b2c2937d8f06acc07b30fd22642ea2460c966d4fd6217f1d0",
- "sha256:de1eae502764b3dde294d6652a0046489cf31008de190c4dd8d05e7f4b5e0d71",
- "sha256:e00b6c6d75a6e912990cbc23d48ddfdbfefc3e400c20be6593988839292248c5",
- "sha256:ed8beef197efc6e6ab0ad03cea0885b31cc11f226290783649b4dafe1fb2ea27"
- ],
- "index": "pypi",
- "version": "==0.14.5"
- },
"mccabe": {
"hashes": [
"sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
diff --git a/SETUP.md b/SETUP.md
index 2a8c64e9..dd974338 100644
--- a/SETUP.md
+++ b/SETUP.md
@@ -6,7 +6,6 @@
- `psql -c 'CREATE DATABASE pysite OWNER pysite;'`
- `echo 'DEBUG=1' >> .env`
- `echo 'DATABASE_URL=postgres://pysite:@localhost/pysite' >> .env`
-- `echo 'BOT_API_KEY=123456' >> .env`
- `pipenv shell`
- `python manage.py migrate`
- `python manage.py runserver`
diff --git a/api/admin.py b/api/admin.py
index 8c38f3f3..4185d360 100644
--- a/api/admin.py
+++ b/api/admin.py
@@ -1,3 +1,3 @@
-from django.contrib import admin
+# from django.contrib import admin
# Register your models here.
diff --git a/docker/base.Dockerfile b/docker/base.Dockerfile
new file mode 100644
index 00000000..c90ee5dc
--- /dev/null
+++ b/docker/base.Dockerfile
@@ -0,0 +1,18 @@
+# Base image used for building the site.
+FROM python:3.7-alpine
+
+RUN apk add python3-dev git libpq postgresql-dev gcc cmake autoconf automake musl-dev
+RUN python3 -m pip install pipenv
+
+ENV PIPENV_HIDE_EMOJIS=1
+ENV PIPENV_IGNORE_VIRTUALENVS=1
+ENV PIPENV_MAX_SUBPROCESS=2
+ENV PIPENV_NOSPIN=1
+ENV PIPENV_VENV_IN_PROJECT=1
+
+COPY . /app
+WORKDIR /app
+
+RUN pipenv install --deploy --system
+
+CMD ["gunicorn", "--workers", "4", "--bind", "0.0.0.0:4000", "pysite:wsgi"]
diff --git a/home/admin.py b/home/admin.py
index 8c38f3f3..4185d360 100644
--- a/home/admin.py
+++ b/home/admin.py
@@ -1,3 +1,3 @@
-from django.contrib import admin
+# from django.contrib import admin
# Register your models here.
diff --git a/home/models.py b/home/models.py
index 71a83623..0b4331b3 100644
--- a/home/models.py
+++ b/home/models.py
@@ -1,3 +1,3 @@
-from django.db import models
+# from django.db import models
# Create your models here.
diff --git a/home/views.py b/home/views.py
index 91ea44a2..fd0e0449 100644
--- a/home/views.py
+++ b/home/views.py
@@ -1,3 +1,3 @@
-from django.shortcuts import render
+# from django.shortcuts import render
# Create your views here.
diff --git a/pysite/hosts.py b/pysite/hosts.py
index 827f49c3..67fc2451 100644
--- a/pysite/hosts.py
+++ b/pysite/hosts.py
@@ -4,10 +4,10 @@ from django_hosts import host, patterns
host_patterns = patterns(
'',
# > | Subdomain | URL Module | Host entry name |
- #host(r"admin", "admin", name="admin"),
+ # host(r"admin", "admin", name="admin"),
host(r'api', 'api.urls', name='api'),
- #host(r"staff", "staff", name="staff"),
- #host(r"wiki", "wiki", name="wiki"),
- #host(r"ws", "ws", name="ws"),
+ # host(r"staff", "staff", name="staff"),
+ # host(r"wiki", "wiki", name="wiki"),
+ # host(r"ws", "ws", name="ws"),
host(r'.*', 'home.urls', name=settings.DEFAULT_HOST)
)
diff --git a/pysite/settings.py b/pysite/settings.py
index 3392426d..c7a21083 100644
--- a/pysite/settings.py
+++ b/pysite/settings.py
@@ -11,7 +11,7 @@ https://docs.djangoproject.com/en/2.1/ref/settings/
"""
import os
-import sys
+# import sys
import environ
@@ -40,6 +40,11 @@ if DEBUG:
'wiki.pythondiscord.local'
]
SECRET_KEY = "+_x00w3e94##2-qm-v(5&-x_@*l3t9zlir1etu+7$@4%!it2##"
+
+elif 'CI' in os.environ:
+ ALLOWED_HOSTS = ['*']
+ SECRET_KEY = "{©ø¬½.Þ7&Ñ`Q^Kº*~¢j<wxß¾±ðÛJ@q"
+
else:
ALLOWED_HOSTS = [
'pythondiscord.com',
@@ -175,6 +180,3 @@ REST_FRAMEWORK = {
),
'TEST_REQUEST_DEFAULT_FORMAT': 'json'
}
-
-# Bot API settings
-BOT_API_KEY = env('BOT_API_KEY')
diff --git a/scripts/deploy-ci.sh b/scripts/deploy-ci.sh
new file mode 100755
index 00000000..f5c965ca
--- /dev/null
+++ b/scripts/deploy-ci.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+# Build and deploy on master branch
+echo "Connecting to docker hub"
+echo "$GITLAB_DOCKER_PASSWORD" | docker login --username "$GITLAB_DOCKER_USERNAME" --password-stdin registry.gitlab.com
+
+changed_lines=$(git diff HEAD~1 HEAD docker/base.Dockerfile | wc -l)
+
+if [ $changed_lines != '0' ]; then
+ echo "base.Dockerfile was changed"
+
+ echo "Building CI container"
+ docker build -t registry.gitlab.com/python-discord/projects/site/django-base:latest -f docker/base.Dockerfile .
+
+ echo "Pushing image to GitLab registry"
+ docker push registry.gitlab.com/python-discord/projects/site/django-base:latest
+else
+ echo "base.Dockerfile was not changed, not building"
+fi
diff --git a/wiki/admin.py b/wiki/admin.py
index 8c38f3f3..4185d360 100644
--- a/wiki/admin.py
+++ b/wiki/admin.py
@@ -1,3 +1,3 @@
-from django.contrib import admin
+# from django.contrib import admin
# Register your models here.
diff --git a/wiki/models.py b/wiki/models.py
index 71a83623..0b4331b3 100644
--- a/wiki/models.py
+++ b/wiki/models.py
@@ -1,3 +1,3 @@
-from django.db import models
+# from django.db import models
# Create your models here.
diff --git a/wiki/tests.py b/wiki/tests.py
index 7ce503c2..a79ca8be 100644
--- a/wiki/tests.py
+++ b/wiki/tests.py
@@ -1,3 +1,3 @@
-from django.test import TestCase
+# from django.test import TestCase
# Create your tests here.
diff --git a/wiki/views.py b/wiki/views.py
index 91ea44a2..fd0e0449 100644
--- a/wiki/views.py
+++ b/wiki/views.py
@@ -1,3 +1,3 @@
-from django.shortcuts import render
+# from django.shortcuts import render
# Create your views here.