nprapps/bernard

Name: bernard

Owner: NPR visuals team

Description: null

Created: 2017-01-24 21:46:07.0

Updated: 2017-02-14 14:52:07.0

Pushed: 2017-01-25 15:56:56.0

Homepage: null

Size: 10

Language: Python

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Bernard

What is this?

Bernard is a Slack incoming webhook setup as a cron job that retrieves all new rules, proposed rules, and presidential documents from the Federal Register. This repo will provide the infrastructure to setup a cron job on an Ubuntu server.

It is named after Bernard Kennedy, the first director of the Federal Register.

Assumptions

The following things are assumed to be true in this documentation.

For more details our stack, see our development environment blog post.

What's in here?

The project contains the following folders and important files:

Bootstrap the project
ernard
rtualenv bernard
install -r requirements.txt
Hide project secrets

Project secrets should never be stored in app_config.py or anywhere else in the repository. Instead, always store passwords, keys, etc. in environment variables and document that they are needed here in the README.

Any environment variable that starts with $PROJECT_SLUG_ will be automatically loaded when app_config.get_secrets() is called.

Connecting to Slack

To connect Bernard to your Slack, you will need to create an incoming webhook and copy the webhook endpoint to an environment variable called bernard_WEBHOOK.

Deploy to EC2
  1. Run fab staging master servers.setup to configure the server.
  2. Run fab staging master deploy to deploy the project to the server. Note that this will also install your crontab.
Managing cron jobs

Cron jobs are defined in the file crontab. Each task should use the run_on_server.sh shim to ensure the project's virtualenv is properly activated prior to execution. For example:

* * * ubuntu bash /home/ubuntu/apps/bernard/repository/cron.sh fab $DEPLOYMENT_TARGET cron_jobs.test >> /var/log/bernard/crontab.log 2>&1

The cron jobs themselves should be defined in fabfile/cron_jobs.py whenever possible.

To install the cronjob, run either fab staging master deploy, which will also synchronize the repo with the latest on Github, or fab staging master servers.install_crontab to simply copy the crontab on the server to etc/cron.d.

To uninstall the cronjob (a recommended practice for disabling the job), run fab staging master servers.uninstall_cronjob.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.