diff --git a/doc/development.md b/doc/development.md index cb71278c40..fcf0b7a40f 100644 --- a/doc/development.md +++ b/doc/development.md @@ -72,3 +72,25 @@ Very handy: if you uncomment the `--pdb` argument in `NOSE_ARGS` in `lms/envs/te If you change course content, while running the LMS in dev mode, it is unnecessary to restart to refresh the modulestore. Instead, hit /migrate/modules to see a list of all modules loaded, and click on links (eg /migrate/reload/edx4edx) to reload a course. + +### Gitreload-based workflow + +github (or other equivalent git-based repository systems) used for +course content can be setup to trigger an automatic reload when changes are pushed. Here is how: + +1. Each content directory in mitx_all/data should be a clone of a git repo + +2. The user running the mitx gunicorn process should have its ssh key registered with the git repo + +3. The list settings.ALLOWED_GITRELOAD_IPS should contain the IP address of the git repo originating the gitreload request. + By default, this list is ['207.97.227.253', '50.57.128.197', '108.171.174.178'] (the github IPs). + The list can be overridden in the startup file used, eg lms/envs/dev*.py + +4. The git post-receive-hook should POST to /gitreload with a JSON payload. This payload should define at least + + { "repository" : { "name" : reload_dir } + + where reload_dir is the directory name of the content to reload (ie mitx_all/data/reload_dir should exist) + + The mitx server will then do "git reset --hard HEAD; git clean -f -d; git pull origin" in that directory. After the pull, + it will reload the modulestore for that course.