雖然說 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:
    - xxxx@gmail.com

如果 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,寫完收工。

arrow
arrow

    zack9433 發表在 痞客邦 留言(3) 人氣()