mozmeao / snippets-service

Service powering snippets on Firefox's about:home.
https://snippets.mozilla.com
Mozilla Public License 2.0
31 stars 36 forks source link
django service sugardough

snippets service

What's Deployed? Documentation RTFM Pipeline Pipeline

The root of all messaging.

Develop using Docker

One time setup of your environment and database:

  1. Make sure you have docker and docker-compose
  2. Setup an .env file with in the project root dir with at least:
    • SECRET_KEY set
    • DATABASE_URL=postgres://snippets:snippets@db:5432/snippets
    • PROD_DETAILS_DIR set to a writeable path, eg PROD_DETAILS_DIR=/home/webdev/
  3. $ docker-compose run --service-ports web bash
  4. [docker]$ ./manage.py update_product_details
    • If you get an error connecting to the database, you probably need to wait for a few seconds for PostgreSQL to initialize and then re-try the command.
  5. [docker]$ ./manage.py migrate
  6. [docker]$ ./manage.py createsuperuser (enter any user/email/pass you wish. Email is not required.)
  7. [docker]$ ./manage.py shell -c 'from snippets.base.util import *; create_countries();'
    • Create a list of Countries from Product Details info. Note that create_locales() no longer exists.

Start the development server:

  1. [docker]$ ./bin/run-dev.sh
  2. Navigate to https://localhost:8443/admin and log in with the admin account created in step #4. See an TLS Security Exception? Go to TLS Certifcates section.

A note about using run instead of up

docker-compose run is more suitable for development purposes since you get a shell and from there you can run the webserver command. This way you can debug using set_trace() or restart the server when things go bad. The trick here is to use --service-ports flag to make docker compose map the required ports.

The project is configured for docker-compose up if that's your preference.

TLS Certificates

Firefox communicates with the snippets service only over secure HTTPS connections. For development, the runserver_plus command as executed in ./bin/run-dev.sh generates and uses a self-signed certificate.

You'll need to permanently accept the certificate, to allow Firefox to fetch Snippets from your development environment.

Run the tests

$ ./manage.py test --parallel

Rebuild your Docker Compose Envinronment

To rebuild your docker compose environment, first remove current images and containers and then run the build command.

$ docker-compose kill
$ docker-compose rm -f
$ docker-compose build

Install Therapist

Therapist is a smart pre-commit hook for git to ensure that committed code has been properly linted.

Install the hooks by running:

$ therapist install