Create application and configure pipeline on Heroku.
To initiate project follow commands:
npm install herokupipelines4travis lodash --save-dev
$(npm bin)/hp4t setup
Package lodash is optional - install it if you want to use it in infrastructure/
.
You can edit files:
.travis.yml
- Travis CI configuration fileinfrastructure/
- directory with infrastructure configurationbase.js
- base configurationstage.js
- stage environment configurationproduction.js
- production environment configuration
For simplify usage you should define:
alias hp4t="$(npm bin)/hp4t"
hp4t setup
- initialise projecthp4t export app_name [heroku_api_key]
- export existing Heroku application configration
hp4t init
- initialise runtime environmenthp4t provision environment_name
- provision Heroku apphp4t pipeline
- setup Heroku pipelinehp4t deploy app_name
- deploy code to Heroku apphp4t run app_name "command with params"
- run command on Heroku application (useful for database migration)hp4t promote app_name
- promote existing application to next environmenthp4t package output-file.tgz
- build a tarball (tgz) with dependencies for Npm based projectshp4t deploy-tarball app_name file.tgz
- deploy tarball file to a Heroku aplication
.travis.yml
---
language: node_js
node_js: stable
env:
global:
# ========== Heroku Pipelines for Travis =========
# HEROKU_API_KEY
- secure: "..."
- HP4T_HEROKU_APPNAME_STAGE=hp4t-test-stage
- HP4T_HEROKU_APPNAME_PRODUCTION=hp4t-test
cache:
directories:
- node_modules
install:
- npm install
script:
- npm test
- npm lint
deploy:
- provider: script
skip_cleanup: true
script: make deploy
on:
branch: master
after_success:
- hp4t notify-rollbar
Makefile
deploy:
hp4t init
hp4t package build.tgz
hp4t pipeline
hp4t provision stage
hp4t deploy-tarball build.tgz ${HP4T_HEROKU_APPNAME_STAGE}
hp4t run ${HP4T_HEROKU_APPNAME_STAGE} "npm run migrate-database"
hp4t provision production
hp4t promote ${HP4T_HEROKU_APPNAME_STAGE}
hp4t run ${HP4T_HEROKU_APPNAME_PRODUCTION} "npm run migrate-database"
Please remember to use one tab indent in Makefile
.