虽然说 Travis CI 这玩意儿不是新鲜事了,不过之前一直都懒得碰,直到现在做某个专案时,

写完测试,就顺便来导入 Travis CI,原本心想应该不会太难搞,但实际在导入的过程还是碰

上了一些鸟事,整个过程步骤如下:

1. 注册帐号(一定要有 github accont) - Travis CI

2. 指定要加入 CI 的 repository

在 My Repositories 会列出目前个人有哪些 github repo 正在进行 CI,可以按下红色框来加入新的 repo

萤幕快照_2014-09-09_下午9_36_34  

3. 编辑 .travis.yml

基本设定如下:

language: node_js
node_js:
  - "0.10"
branches:
  only:
    - master
notification:
  email:
    - [email protected]

如果 repo 的测试状况没有很复杂的话,基本上设定到此就可以,Travis CI 会在 npm install 完后

,自动去呼叫 npm test,所以在 package.json 有设好基本上没问题,但我的状况没有那么单纯,如下:

1. 有一个 dependency 是 bitbucket private repo,直接让 Travis CI 执行 npm install 会喷错误

2. 此专案 repo 有用 bower,但 Travis CI 没有,所以必须安装

3. 专案有作 E2E 测试,必须装好 selenium driver

后面两个问题都好解,第一个问题比较麻烦点,针对后面两个问题只要加上如下的设定就好:

before_install:
  - npm install -g bower
  - bower install
before_script:
  - ./node_modules/protractor/bin/webdriver-manager update

 针对第一个问题,我们必须产生一组 key,将 public key 放到 bitbucket 的 deployment key,

另外将加密过的 private key 加入到 .travis.yml,整个步骤如下:

1. ssh-keygen -t rsa -N "" -C travis -f ~/.ssh/travis_key

2. 产生加密的 private key string,可透过以下连结说明的方式制作(For MAC)

https://gist.github.com/davestern/9377538

3. 将产生的 secure 文字复制到专案的 .travis.yml,符合以下格式:

env:
  global:
    - secure: "xxxxxxxxxxxxxxxxxxxx"
    - secure: "xxxxxxxxxxxxxxxxxxxx"

 4. 将加密的 private key string 写到 travis 机器上的 enviroment variable

before_install:
  - echo -n $id_rsa_{1..35} >> ~/.ssh/id_rsa_base64
  - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
  - chmod 600 ~/.ssh/id_rsa
  - npm install -g bower
  - bower install

 Note: $id_rsa_{1..35} 这个范围是看产生出来的 secure string 个数

到此就可以正常的设定 Travis CI,写完收工。

查看原文 >>
相关文章