Skip to content

Instantly share code, notes, and snippets.

@iMerica
Created June 15, 2018 01:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iMerica/a86cb7ce9388aecfbcb2d31aa8cf8c03 to your computer and use it in GitHub Desktop.
Save iMerica/a86cb7ce9388aecfbcb2d31aa8cf8c03 to your computer and use it in GitHub Desktop.
Docker based Gitlab CI workflow for Django
image: docker:latest
services:
- docker:dind
stages:
- build
- test
- push
variables:
DJANGO_TAG_NAME: registry.gitlab.com/<username>/<repo>/<image>:$CI_COMMIT_REF_NAME
DJANGO_SETTINGS_MODULE: path.to.your.settings
DATABASE_URL: postgres://postgres:mysecretpassword@postgres/postgres
before_script:
- docker login -u <username> -p $CI_BUILD_TOKEN registry.gitlab.com
build:django:
artifacts:
paths:
- docker-images
stage: build
script:
- mkdir docker-images
- docker build --pull -t $DJANGO_TAG_NAME -f path/to/your/Dockerfile .
- docker save $DJANGO_TAG_NAME > docker-images/app.tar
only:
- master
test:django:
stage: test
script:
- docker load -i docker-images/app.tar
- docker run --name test-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
- docker run --rm --link test-postgres:postgres -v $(pwd):/<DOCKER WORKDIR> -e DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE -e DATABASE_URL=$DATABASE_URL $DJANGO_TAG_NAME python manage.py test -v 2
push:django:
stage: push
script:
- docker load -i docker-images/app.tar
- docker push $DJANGO_TAG_NAME
only:
- master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment