diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9bf3e6c7747f03ce2be4d59f0959b692f98646ae
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,45 @@
+stages:
+	- deploy
+
+before_script:
+	script:
+	- echo "preparing environment"
+	- virtualenv env
+	- . env/bin/activate
+	- pip install -r pip-packages.txt
+
+deploy_staging:
+	stage: deploy
+	script:
+		- echo "Deploy to staging server"
+	environment:
+		name: stage
+		url: https://portal.ucc.asn.au/stage
+	only:
+	- master
+
+	deploy_prod:
+	stage: deploy
+	script:
+		- echo "Deploy to production server"
+	environment:
+		name: production
+		url: https://portal.ucc.asn.au
+	when: manual
+	only:
+	- master
+
+deploy_test:
+	stage: deploy
+	script:
+		- echo "Deploy to test"
+		- . venv/bin/activate
+		- python3 src/manage.py makemigrations
+		- python3 src/manage.py migrate --run-syncdb
+		- ln -s /etc/uwsgi/vassals/test.skel /etc/uwsgi/vassals/$CI_COMMIT_REF_NAME.ini
+
+	environment:
+		name: test/$CI_COMMIT_REF_NAME
+		url: https://$CI_COMMIT_REF_NAME.test.ucc.asn.au
+	except:
+	- master
\ No newline at end of file