diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 000000000..7a15de5f4 --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "rd_ui/app/bower_components" +} diff --git a/.gitignore b/.gitignore index 57951982b..d35a8f743 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,8 @@ dump.rdb # Docker related docker-compose.yml + +node_modules +.tmp +.sass-cache +rd_ui/app/bower_components diff --git a/Makefile b/Makefile index a15f0931a..f4e15a9b6 100644 --- a/Makefile +++ b/Makefile @@ -6,17 +6,17 @@ BASE_VERSION=$(shell python ./manage.py version | cut -d + -f 1) FILENAME=$(CIRCLE_ARTIFACTS)/$(NAME).$(VERSION).tar.gz deps: - if [ -d "./rd_ui/app" ]; then cd rd_ui && npm install; fi - if [ -d "./rd_ui/app" ]; then cd rd_ui && npm run bower install; fi - if [ -d "./rd_ui/app" ]; then cd rd_ui && npm run build; fi + if [ -d "./rd_ui/app" ]; then npm install; fi + if [ -d "./rd_ui/app" ]; then npm run bower install; fi + if [ -d "./rd_ui/app" ]; then npm run build; fi pack: sed -ri "s/^__version__ = '([0-9.]*)'/__version__ = '$(FULL_VERSION)'/" redash/__init__.py - tar -zcv -f $(FILENAME) --exclude="optipng*" --exclude=".git*" --exclude="*.pyc" --exclude="*.pyo" --exclude="venv" --exclude="rd_ui/node_modules" --exclude="rd_ui/dist/bower_components" --exclude="rd_ui/app" * + tar -zcv -f $(FILENAME) --exclude="optipng*" --exclude=".git*" --exclude="*.pyc" --exclude="*.pyo" --exclude="venv" --exclude="node_modules" --exclude="rd_ui/dist/bower_components" --exclude="rd_ui/app" * upload: python bin/release_manager.py $(CIRCLE_SHA1) $(BASE_VERSION) $(FILENAME) test: nosetests --with-coverage --cover-package=redash tests/ - #cd rd_ui && grunt test + #grunt test diff --git a/Procfile.heroku b/Procfile.heroku new file mode 100644 index 000000000..6b8aed452 --- /dev/null +++ b/Procfile.heroku @@ -0,0 +1,2 @@ +web: ./manage.py runserver -p $PORT --host 0.0.0.0 +worker: celery worker --app=redash.worker --beat -Q queries,celery,scheduled_queries diff --git a/bin/pre_compile b/bin/pre_compile new file mode 100644 index 000000000..fd0765044 --- /dev/null +++ b/bin/pre_compile @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# heroku pre_compile script + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +pushd $DIR/.. + +# heroku requires cffi to be in requirements.txt in order for libffi to be installed. +# https://github.com/heroku/heroku-buildpack-python/blob/master/bin/steps/cryptography +# to avoid making it a requirement for other build systems, we'll inject it now +# into the requirements.txt file +# remove pymssql, it doesn't compile on heroku +grep -v '^pymssql' requirements_all_ds.txt >> requirements.txt + +# make the heroku Procfile the active one +cp Procfile.heroku Procfile + +popd diff --git a/rd_ui/bower.json b/bower.json similarity index 100% rename from rd_ui/bower.json rename to bower.json diff --git a/docs/setup.rst b/docs/setup.rst index f054ab036..638936bc6 100644 --- a/docs/setup.rst +++ b/docs/setup.rst @@ -79,6 +79,42 @@ Docker Compose Now proceed to `"Setup" <#setup>`__. +Heroku +------ + +Due to the nature of Heroku deployments, upgrading to a newer version of Redash +requires performing the steps outlined on the `"How to Upgrade"`__ page. + +1. Install `Heroku CLI`__. + +2. Create Heroku App:: + + $ heroku apps:create + +2. Set application buildpacks:: + + $ heroku buildpacks:set heroku/python + $ heroku buildpacks:add --index 1 heroku/nodejs + +3. Add Postgres and Redis addons:: + + $ heroku addons:create heroku-postgresql:hobby-dev + $ heroku addons:create heroku-redis:hobby-dev + +4. Update the cookie secret (**Important** otherwise anyone can sign new cookies and impersonate users. You may be able to run the command ``pwgen 32 -1`` to generate a random string):: + + $ heroku config:set REDASH_COOKIE_SECRET='' + +5. Push the repository to Heroku:: + + $ git push heroku master + +6. Create database tables:: + + $ heroku run bash + $ python manage.py database create_tables + + Other ----- diff --git a/rd_ui/gulpfile.js b/gulpfile.js similarity index 98% rename from rd_ui/gulpfile.js rename to gulpfile.js index 4355297eb..484f54495 100644 --- a/rd_ui/gulpfile.js +++ b/gulpfile.js @@ -9,8 +9,8 @@ var wiredep = require('wiredep').stream; var runSequence = require('run-sequence'); var yeoman = { - app: 'app', - dist: 'dist' + app: 'rd_ui/app', + dist: 'rd_ui/dist' }; var paths = { diff --git a/rd_ui/package.json b/package.json similarity index 87% rename from rd_ui/package.json rename to package.json index 8a199b7fc..d707c5da8 100644 --- a/rd_ui/package.json +++ b/package.json @@ -34,7 +34,8 @@ "scripts": { "test": "echo 'No tests.'", "build": "gulp build", - "bower": "bower" + "bower": "bower", + "heroku-postbuild": "npm install --dev && npm run bower install && npm run build && npm prune --production" }, "dependencies": { } diff --git a/rd_ui/.bowerrc b/rd_ui/.bowerrc deleted file mode 100644 index ba0accc5a..000000000 --- a/rd_ui/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "app/bower_components" -} diff --git a/rd_ui/.gitattributes b/rd_ui/.gitattributes deleted file mode 100644 index 212566614..000000000 --- a/rd_ui/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto \ No newline at end of file diff --git a/rd_ui/.gitignore b/rd_ui/.gitignore deleted file mode 100644 index ff422877e..000000000 --- a/rd_ui/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -.tmp -.sass-cache -app/bower_components diff --git a/rd_ui/.travis.yml b/rd_ui/.travis.yml deleted file mode 100644 index a80b6e038..000000000 --- a/rd_ui/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - '0.10' -before_script: - - 'npm install -g bower grunt-cli' - - 'bower install'