Continuous Integration with Travis CI

Perform Integration Testing and Continuous Deployments to Heroku

Continuous Integration with Travis CI

by John Vincent

Posted on April 5, 2017

Configure Github, Travis and Heroku so that a change to a github repository triggers a Travis CI build which executes Mocha/Chai Unit Tests and if successful, deploys to Heroku

Lets get started.

Install Heroku

If Heroku is not installed, see Heroku Notes for details.

Install Travis CLI

If not already installed, install Travis CI command line interface.

Usually, the following will work

sudo gem install travis

but on OSX, fails due to OSX security feature.

May need to install to /usr/local/bin

Update system

sudo gem update -n /usr/local/bin

then install Travis

sudo gem install travis -n /usr/local/bin

To update Travis

sudo gem update travis

or to remove Travis

sudo gem uninstall travis

Join Travis

From Travis

  • Sign-up
    • Authorize, give lots of privileges

    • Travis syncs projects

Travis CI

From Github

* Select {github-project} project
* Settings, Integrations & services (left menu)
* Add a Service (mid-right)
    * Select Travis CI from dropdown
    * Do not add User, Token, Domain
    * Add service (green button at bottom)

From Travis

* click on `username`(top right)
    * Lists github projects
    * Sync Account
    * Activate {github-project}

From Github

* Select {github-project} project
    *  Settings, Integrations & services
        * Travis CI, Edit
            * Notice Travis CI entry in Webhooks

For a Node/Express application, or for a React/Node/Express application, edit .travis.yml

language: node_js
node_js: node
    - node_modules

or, if already done

touch .travis.yml

to force a rebuild.

Git push .travis.yml to master

From Travis CI:

  • Select User-name, Accounts (top-right)
  • Sync Account (top-right)
  • Select {project}
  • Travis builds the project, see Job log
  • When complete, Restart build appears (mid-right)

Set up continuous deployment

Configure Travis to work with Heroku.

  • Push changes to master on GitHub, or merge a pull request into master, our tests will automatically run.
  • If our tests pass, Travis CI will deploy to Heroku. If our tests do not pass, it will not deploy.

Setup Travis to Deploy to Heroku

Travis login requires my Github login.

cd {project}
travis login

and provide Github username & password

or, already have setup SSH for Github

cd {project}
travis login --auto-password

Deploy to Heroku

travis setup heroku

"return" to all the questions.

To see the differences

git diff

Create Heroku Application

heroku create {heroku-project}


* App name: {heroku-project}
* https://{heroku-project}

Edit .travis.yml

    app: {heroku-project}

Git commit changes to master

Test Heroku App

To run the app on Heroku:


Test CI is working

To test the continuous integration

  • Change or touch any file
  • git commit to master
  • verify Travis CI rebuilds the project.


git remote -v

shows Github and Heroku repositories.

Heroku Remote branch

If Heroku Remote Repository is wrong, for example:

git remote -v


Let's fix that:

git remote rm heroku
git remote add heroku{heroku-project}.git


If require MongoDB at Heroku, must add the following to .travis.yml

- mongodb

Travis Build Error

invalid option "--api_key="

is caused by bad API key.

The solution is to build a new key.

  • Heroku
  • Navigate to your Heroku account
  • API Key section
  • Copy API key
  • Go to project root directory
  • Run the following
travis encrypt <api-key> -r <github-user>/<repo-name> --add deploy.api_key

Notice that .travis.yml is updated


secure: has a new value.

Git submit to master and Travis will rebuild.