quickbuild
Version:
A mature, feature-complete application generator with an emphasis on speed
168 lines (164 loc) • 5.39 kB
YAML
# This circle.yml file does some basic testing on CI for the boilerplate itself.
#
# Although this file is present on the "boilerplate-release" branch, this file is
# not restored from the django-admin startproject command.
#
# There are instructions on README.md for the user to replace this path with the
# correct file.
#
version: 2
jobs:
build:
working_directory: ~/django-react-boilerplate
docker:
- image: circleci/python:3.7-stretch-node-browsers
steps:
- checkout
- run:
command: sudo chown -R circleci:circleci /usr/local/bin
- run:
command: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
# create testproject
- run:
command: pip install django==2.*
- run:
command: django-admin startproject testproject --extension py,yml,json,example --name Procfile,README.md --template=.
# build and test frontend
- restore_cache:
keys:
- v1-npm-cache-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- v1-npm-cache-{{ .Branch }}-
- v1-npm-cache-
- run:
command: npm update --save
path: testproject
- run:
command: npm update --save-dev
path: testproject
- run:
name: "hotfix for #133"
command: |
sed -i 's/"bootstrap-loader": "^2.1.0"/"bootstrap-loader": "2.1.0"/g' package.json
path: testproject
- run:
command: npm install --no-optional
path: testproject
- run:
command: npm dedupe
path: testproject
# npm ls will error on dependencies errors
- run:
command: npm ls
path: testproject
- save_cache:
key: dependency-cache-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
paths:
- testproject/node_modules
- run:
command: npm run test
path: testproject
- run:
command: npm run lint
path: testproject
- run:
command: npm run build
path: testproject
# build and test backend
- run:
command: pip install requests pip-tools --upgrade
path: testproject
- run:
command: pip-compile requirements.in > requirements.txt && pip-compile dev-requirements.in > dev-requirements.txt
path: testproject
- restore_cache:
keys:
- v1-pip-cache-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- v1-pip-cache-{{ .Branch }}-
- v1-pip-cache-
- run:
command: pip install --user -r requirements.txt && pip install -r dev-requirements.txt
path: testproject
- save_cache:
key: pip-cache-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
paths:
- testproject/.venv
- /usr/local/bin
- /usr/local/lib/python3.7/site-packages
- run:
command: cp testproject/settings/local.py.example testproject/settings/local.py
path: testproject/backend
- run:
command: cp .env.example .env
path: testproject/backend
- run:
command: python manage.py makemigrations
path: testproject/backend
- run:
command: python manage.py migrate
path: testproject/backend
- run:
command: python manage.py test
path: testproject/backend
- run:
command: prospector
path: testproject/backend
- run:
command: python manage.py has_missing_migrations
path: testproject/backend
- run:
command: python manage.py check --deploy --fail-level WARNING
path: testproject/backend
environment:
SECRET_KEY: '$(python -c "import uuid; print(uuid.uuid4().hex + uuid.uuid4().hex)")'
SENDGRID_USERNAME: foo
SENDGRID_PASSWORD: password
DJANGO_SETTINGS_MODULE: 'testproject.settings.production'
DATABASE_URL: 'sqlite:///'
ALLOWED_HOSTS: '.example.org'
REDIS_URL: 'redis://'
deploy:
working_directory: ~/django-react-boilerplate
docker:
- image: circleci/python:3.6-stretch-node-browsers
steps:
- checkout
- run:
command: mkdir -p circleci
- run:
command: mv proj_circle.yml circleci/config.yml
- run:
command: git checkout -b boilerplate-release
- run:
command: git add circleci/config.yml
- run:
command: git rm proj_circle.yml
- run:
command: git commit -m "Replacing circle.yml" --author "Vinta Software <contact@vinta.com.br>"
environment:
GIT_COMMITTER_NAME: "Vinta Software"
GIT_COMMITTER_EMAIL: "contact@vinta.com.br"
- run:
command: git push origin boilerplate-release --force
workflows:
version: 2
build_and_deploy:
jobs:
- build:
filters:
branches:
ignore: boilerplate-release
- deploy:
requires:
- build
filters:
branches:
only: master
nightly:
triggers:
- schedule:
cron: "0 0 * * *"
filters:
branches:
only: master
jobs:
- build