From 9f63581c61249703cb057547360782728b97e81e Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Fri, 14 Oct 2016 19:28:54 +0800 Subject: [PATCH 1/2] Config heroku deployment --- README.md | 7 +++++++ app.json | 33 +++++++++++++++++++++++++++++++++ bin/heroku | 35 +++++++++++++++++++++++++++++++++++ bin/setup | 6 ++++-- package.json | 6 +++++- 5 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 app.json create mode 100755 bin/heroku diff --git a/README.md b/README.md index cab2723d..9af4fbdb 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,13 @@ Thanks for using! :smile: Before you go too far, here is the great docker repo for HackMD. With docker, you can deploy a server in minutes without any downtime. +Heroku Deployment +--- + +You can quickly setup a sample heroku hackmd application by clicking the button below. + +[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) + [migration-to-0.4.0](https://github.com/hackmdio/migration-to-0.4.0) --- diff --git a/app.json b/app.json new file mode 100644 index 00000000..2ed96935 --- /dev/null +++ b/app.json @@ -0,0 +1,33 @@ +{ + "name": "HackMD", + "description": "Realtime collaborative markdown notes on all platforms", + "keywords": [ + "Collaborative", + "Markdown", + "Notes" + ], + "website": "https://hackmd.io", + "repository": "https://github.com/hackmdio/hackmd", + "logo": "https://github.com/hackmdio/hackmd/raw/master/public/hackmd-icon-1024.png", + "success_url": "/", + "scripts": { + "postdeploy": "./node_modules/.bin/sequelize db:migrate" + }, + "env": { + "BUILD_ASSETS": { + "description": "Our build script variable", + "value": "true" + }, + "NPM_CONFIG_PRODUCTION": { + "description": "Let npm also install development build tool", + "value": "false" + }, + "DB_TYPE": { + "description": "Specify database type. See sequelize available databases. Default using postgres", + "value": "postgres" + } + }, + "addons": [ + "heroku-postgresql" + ] +} diff --git a/bin/heroku b/bin/heroku new file mode 100755 index 00000000..12f9cc17 --- /dev/null +++ b/bin/heroku @@ -0,0 +1,35 @@ +#!/bin/bash + +set -e + +if [ "$BUILD_ASSETS" = true ]; then + BUILD_ASSETS=false npm install && npm run assets:install + + # setup config files + cat << EOF > .sequelizerc +var path = require('path'); + +module.exports = { + 'config': path.resolve('config.json'), + 'migrations-path': path.resolve('lib', 'migrations'), + 'models-path': path.resolve('lib', 'models'), + 'url': process.env.DATABASE_URL, + 'dialect': process.env.DB_TYPE +} + +EOF + + cat << EOF > config.json + +{ + "production": { + } +} + +EOF + + cp public/js/config.js.example public/js/config.js + + # build app + npm run build +fi diff --git a/bin/setup b/bin/setup index 8cd20dc7..19edeecf 100755 --- a/bin/setup +++ b/bin/setup @@ -2,7 +2,9 @@ # run command at repo root CURRENT_PATH=$PWD -cd $(git rev-parse --show-toplevel) +if [ -d .git ]; then + cd $(git rev-parse --show-toplevel) +fi if ! type npm > /dev/null then @@ -34,7 +36,7 @@ if [ ! -f .sequelizerc ]; then fi echo "install npm and bower packages" -npm install && bower install +BUILD_ASSETS=false npm install && bower install cat << EOF diff --git a/package.json b/package.json index 80a0e22b..abd6096f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,10 @@ "license": "MIT", "scripts": { "dev": "webpack --config webpack.config.js --progress --colors --watch", - "build": "webpack --config webpack.production.js --progress --colors" + "build": "webpack --config webpack.production.js --progress --colors", + "assets:install": "bower install", + "postinstall": "bin/heroku", + "start": "node app.js" }, "dependencies": { "Idle.Js": "github:shawnmclean/Idle.js", @@ -121,6 +124,7 @@ "devDependencies": { "babel-core": "^6.17.0", "babel-loader": "^6.2.5", + "bower": "^1.7.9", "bower-webpack-plugin": "^0.1.9", "css-loader": "^0.25.0", "ejs-loader": "^0.3.0", From bd7efb80962442cfd010620411d8ee8829c334a4 Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Sun, 16 Oct 2016 11:37:50 +0800 Subject: [PATCH 2/2] Add more config variable --- app.json | 136 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 107 insertions(+), 29 deletions(-) diff --git a/app.json b/app.json index 2ed96935..95c2ffbf 100644 --- a/app.json +++ b/app.json @@ -1,33 +1,111 @@ { - "name": "HackMD", - "description": "Realtime collaborative markdown notes on all platforms", - "keywords": [ - "Collaborative", - "Markdown", - "Notes" - ], - "website": "https://hackmd.io", - "repository": "https://github.com/hackmdio/hackmd", - "logo": "https://github.com/hackmdio/hackmd/raw/master/public/hackmd-icon-1024.png", - "success_url": "/", - "scripts": { - "postdeploy": "./node_modules/.bin/sequelize db:migrate" - }, - "env": { - "BUILD_ASSETS": { - "description": "Our build script variable", - "value": "true" + "name": "HackMD", + "description": "Realtime collaborative markdown notes on all platforms", + "keywords": [ + "Collaborative", + "Markdown", + "Notes" + ], + "website": "https://hackmd.io", + "repository": "https://github.com/hackmdio/hackmd", + "logo": "https://github.com/hackmdio/hackmd/raw/master/public/hackmd-icon-1024.png", + "success_url": "/", + "scripts": { + "postdeploy": "./node_modules/.bin/sequelize db:migrate" }, - "NPM_CONFIG_PRODUCTION": { - "description": "Let npm also install development build tool", - "value": "false" + "env": { + "BUILD_ASSETS": { + "description": "Our build script variable", + "value": "true" + }, + "NPM_CONFIG_PRODUCTION": { + "description": "Let npm also install development build tool", + "value": "false" + }, + "DB_TYPE": { + "description": "Specify database type. See sequelize available databases. Default using postgres", + "value": "postgres" + }, + + "HMD_DOMAIN": { + "description": "domain name", + "required": false + }, + "HMD_URL_PATH": { + "description": "sub url path, like `www.example.com/`", + "required": false + }, + "HMD_ALLOW_ORIGIN": { + "description": "web app port", + "required": false, + "value": "80" + }, + "HMD_PROTOCOL_USESSL": { + "description": "set to use ssl protocol for resources path (only applied when domain is set)", + "required": false + }, + "HMD_URL_ADDPORT": { + "description": "set to add port on callback url (port 80 or 443 won't applied) (only applied when domain is set)", + "required": false + }, + "HMD_FACEBOOK_CLIENTID": { + "description": "Facebook API client id", + "required": false + }, + "HMD_FACEBOOK_CLIENTSECRET": { + "description": "Facebook API client secret", + "required": false + }, + "HMD_TWITTER_CONSUMERKEY": { + "description": "Twitter API consumer key", + "required": false + }, + "HMD_TWITTER_CONSUMERSECRET": { + "description": "Twitter API consumer secret", + "required": false + }, + "HMD_GITHUB_CLIENTID": { + "description": "GitHub API client id", + "required": false + }, + "HMD_GITHUB_CLIENTSECRET": { + "description": "GitHub API client secret", + "required": false + }, + "HMD_GITLAB_BASEURL": { + "description": "GitLab authentication endpoint, set to use other endpoint than GitLab.com (optional)", + "required": false + }, + "HMD_GITLAB_CLIENTID": { + "description": "GitLab API client id", + "required": false + }, + "HMD_GITLAB_CLIENTSECRET": { + "description": "GitLab API client secret", + "required": false + }, + "HMD_DROPBOX_CLIENTID": { + "description": "Dropbox API client id", + "required": false + }, + "HMD_DROPBOX_CLIENTSECRET": { + "description": "Dropbox API client secret", + "required": false + }, + "HMD_GOOGLE_CLIENTID": { + "description": "Google API client id", + "required": false + }, + "HMD_GOOGLE_CLIENTSECRET": { + "description": "Google API client secret", + "required": false + }, + "HMD_IMGUR_CLIENTID": { + "description": "Imgur API client id", + "required": false + } }, - "DB_TYPE": { - "description": "Specify database type. See sequelize available databases. Default using postgres", - "value": "postgres" - } - }, - "addons": [ - "heroku-postgresql" - ] + "addons": [ + "heroku-postgresql" + ] }