Merge pull request #213 from Yukaii/heroku-deploy

Config heroku deployment
This commit is contained in:
Max Wu 2016-10-16 16:02:00 +08:00 committed by GitHub
commit 5e72a69d18
5 changed files with 162 additions and 3 deletions

View file

@ -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)
---

111
app.json Normal file
View file

@ -0,0 +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"
},
"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/<URL_PATH>`",
"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
}
},
"addons": [
"heroku-postgresql"
]
}

35
bin/heroku Executable file
View file

@ -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

View file

@ -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

View file

@ -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",