Deployment¶
codesy is designed with 12-factor app philosophy to run on heroku, so you can easily deploy your changes to your own heroku app with heroku toolbelt.
Deploy your own¶
Create a heroku remote. We suggest naming it codesy-username:
heroku apps:create codesy-username
Set a
DJANGO_SECRET_KEY
on heroku that’s unique to you.:heroku config:set DJANGO_SECRET_KEY="username-birthdate"
Set other required environment variables for heroku:
heroku config:set DJANGO_DEBUG=True heroku config:set ACCOUNT_EMAIL_VERIFICATION=none heroku config:set ACCOUNT_DEFAULT_HTTP_PROTOCOL='https'
Push code to the heroku remote:
git push heroku master
Migrate DB tables:
heroku run python manage.py migrate
Create a superuser:
heroku run python manage.py createsuperuser
Set the site domain name: Go to /admin/sites/site/1/change/ and make it match
codesy-username.herokuapp.com
To enable GitHub sign-ins on your heroku domain, use the following settings to register your own GitHub App:
- Application name: codesy-username
- Homepage URL: https://codesy-username.herokuapp.com/
- Application description: username’s codesy
- Authorization callback URL: https://codesy-username.herokuapp.com/accounts/github/login/callback/
Note
You must use https
Now go to https://codesy-username.herokuapp.com/admin/socialaccount/socialapp/add/ to `enable GitHub Auth`_ on your heroku domain, using your new GitHub App Client ID and Secret
Note
Remember to use https
That’s it. https://codesy-username.herokuapp.com/ should work.
Configure backing services¶
To enable email via SendGrid, set
SENDGRID_USERNAME
andSENDGRID_PASSWORD
config values:heroku config:set SENDGRID_USERNAME= heroku config:set SENDGRID_PASSWORD=
To enable Stripe, you will need to set
STRIPE_SECRET_KEY
andSTRIPE_PUBLIC_KEY
values from Stripe Dashboard API Keys:heroku config:set STRIPE_SECRET_KEY= heroku config:set STRIPE_PUBLIC_KEY=
To enable PayPal, you will need to set
PAYPAL_CLIENT_ID
andPAYPAL_CLIENT_SECRET
value from PayPal Developer Dashboard Apps & Credentials:heroku config:set PAYPAL_CLIENT_ID= heroku config:set PAYPAL_CLIENT_SECRET=
Configure extensions to use the server¶
Check the extension docs.
Deploying to production¶
We use Travis CI for continuous deployment to Heroku. Our .travis.yml defines the flow:
- Commits to
master
are tested on Travis. - If/when the build passes, the code is automatically deployed to https://codesy-stage.herokuapp.com
- To deploy changes to production, a repo owner pushes a commit to the
production
branch on GitHub.
This means anyone can request a production deployment by submitting a Pull Request from master
to production
.