Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Failed to build and deploy node.js project with Travis-ci - No Rakefile found

I am trying to build a node.js project in travis-ci. this is my .travis.yml file:

language: node_js
node_js:
  - 0.8

after_script:
  # Install the Heroku package (or the Heroku toolbelt)
  - npm install heroku
  # Add your Heroku git repo:
  - git remote add heroku [email protected]:*****.git
  # Add your Heroku API key:
  - export HEROKU_API_KEY=KEYHERE
  # Turn off warnings about SSH keys:
  - echo "Host heroku.com" >> ~/.ssh/config
  - echo "   StrictHostKeyChecking no" >> ~/.ssh/config
  - echo "   CheckHostIP no" >> ~/.ssh/config
  - echo "   UserKnownHostsFile=/dev/null" >> ~/.ssh/config
  # Clear your current Heroku SSH keys:
  - heroku keys:clear
  # Add a new SSH key to Heroku
  - yes | heroku keys:add
  # Push to Heroku!
  - yes | git push heroku master

I get the following build error right on the beginning:

No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

Probably because there's something wrong with my yml file and it tries to use the default ruby builder.

I don't think the file is not valid yml file as I have checked it with yml validator at http://yamllint.com/

Something wrong with my Travis specific conf ?

My package.json looks like this :

{
  "name": "csnc",
  "description": "csnc",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "express": "3.x",
    "ejs": ">=0.0.0",
    "express-partials": ">=0.0.0"
  },
  "engines": {
    "node": "0.8.x",
    "npm": "1.1.x"
  }
}

EDIT:

If you are looking for a way to automatically deploy node.js app to Heroku using Travis-CI, look for the answer I included for a working .travis.yml file

like image 358
Michael Avatar asked Nov 21 '12 08:11

Michael


2 Answers

Your .travis.yml file does not validate; you can validate it at http://lint.travis-ci.org/.

Found an issue with the node_js key:

Detected unsupported Node.js versions. For an up-to-date list of supported Node.js versions, see Travis CI documentation at http://bit.ly/travis-ci-environment

Try using 0.8.x.

like image 109
Michelle Tilley Avatar answered Nov 15 '22 06:11

Michelle Tilley


For some weird reason, I have noticed a single space at the beginning of the file that wasn't there before (I swear :). This is what must have caused the error.

The weird thing was that when I was changing node version from 0.8 to 0.6 the validator didn't notice the error. Maybe it's a bug in the validator.

Anyway, I have also succeeded in automating the deployment of my node app to Heroku. I haven't found any documentation around the web regarding the process of doing it (specifically for node), so I am attaching the .travis.yml file that worked for me. Notice that I didn't have to add any tests for my app, it worked fine without it:

language: node_js
node_js:
  - 0.8

after_script:
  # Install the Heroku package (or the Heroku toolbelt)
  - npm install heroku
  # Add your Heroku git repo:
  - git remote add heroku [email protected]:HEROKU_REPO_HERE.git
  # Add your Heroku API key:
  - export HEROKU_API_KEY=ENTER_KEY_HERE
  # Turn off warnings about SSH keys:
  - echo "Host heroku.com" >> ~/.ssh/config
  - echo "   StrictHostKeyChecking no" >> ~/.ssh/config
  - echo "   CheckHostIP no" >> ~/.ssh/config
  - echo "   UserKnownHostsFile=/dev/null" >> ~/.ssh/config
  # Download and install Heroku toolbelt locally
  - wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
  # Clear your current Heroku SSH keys:
  - heroku keys:clear
  # Add a new SSH key to Heroku
  - yes | heroku keys:add
  # Push to Heroku!
  - yes | git push heroku master

EDIT:

I have recently moved from Travis.ci to Drone.io. If you are looking for a automatic deployment to Heroku from Github, you should check it out, It works great and was easier to set up IMO.

https://drone.io/

like image 37
Michael Avatar answered Nov 15 '22 06:11

Michael