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. 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. 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) [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 # run command at repo root
CURRENT_PATH=$PWD 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 if ! type npm > /dev/null
then then
@ -34,7 +36,7 @@ if [ ! -f .sequelizerc ]; then
fi fi
echo "install npm and bower packages" echo "install npm and bower packages"
npm install && bower install BUILD_ASSETS=false npm install && bower install
cat << EOF cat << EOF

View file

@ -6,7 +6,10 @@
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"dev": "webpack --config webpack.config.js --progress --colors --watch", "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": { "dependencies": {
"Idle.Js": "github:shawnmclean/Idle.js", "Idle.Js": "github:shawnmclean/Idle.js",
@ -121,6 +124,7 @@
"devDependencies": { "devDependencies": {
"babel-core": "^6.17.0", "babel-core": "^6.17.0",
"babel-loader": "^6.2.5", "babel-loader": "^6.2.5",
"bower": "^1.7.9",
"bower-webpack-plugin": "^0.1.9", "bower-webpack-plugin": "^0.1.9",
"css-loader": "^0.25.0", "css-loader": "^0.25.0",
"ejs-loader": "^0.3.0", "ejs-loader": "^0.3.0",