Ikbear Ikbear - 11 months ago 69
Node.js Question

How to use travis-ci's .travis.yml to provide environment parameters for Node.js Application?

I use travis-ci to test my node.js application. Because the application need users login with Access Key and Secret Key to test, I need to specify these two keys in travis-ci's .travis.yml file. So How can i do this? And how to get these environment parameters in Node?

Like these two parameters: https://github.com/ikbear/nodejs-sdk/blob/feature/copy_and_move_file/test/rs.test.js#L22

I want to specify them in .travis.yml like this:

language: node_js
- 0.8
- 0.6
- 0.4
- QINIU_ACCESS_KEY = '2FRuiVGEsA511NS9pNd2uvuSB3k5ozXE_DHCH8Ov' QINIU_SECRET_KEY = 'CIRtcmymB3VeIfXebFvYxmMmH9u2oLKW6rffVvoK'

So how can i get QINIU_ACCESS_KEY and QINIU_SECRET_KEY from my this test file? https://github.com/ikbear/nodejs-sdk/blob/feature/copy_and_move_file/test/rs.test.js

Answer Source

Update: Travis now supports defining variables directly in build respositories via their web user interface. So, unless you have a need to generate local encrypted variables manually for your .travis.yml file (as per original answer below), this seems like the easiest way to get an environment variable working with Travis CI.

I'm not sure of specifics regarding Node.js, but if you want to use QINIU_ACCESS_KEY and QINIU_SECRET_KEY in your .travis.yml without them being plain text, make them secure environment variables:

Step 0: Install the travis gem (Install Rubygems if you haven't got it already; not sure if there's another way to get the travis command or another way to perform Step 1 below):

$ gem install travis

Step 1: Encrypt the values, taking note of the result:

$ travis encrypt QINIU_ACCESS_KEY=2FRuiVGEsA511NS9pNd2uvuSB3k5ozXE_DHCH8Ov
$ travis encrypt QINIU_SECRET_KEY=CIRtcmymB3VeIfXebFvYxmMmH9u2oLKW6rffVvoK

Step 2: Add the values to your .travis.yml file:


(Multiple keys called secure are no problem)

Next time your app goes through Travis, you should see on the Config line:


More StackOverflow Q&As that may be of assistance (it's in a Ruby on Rails context, but they deal with this issue) are here: