雖然說 Travis CI 這玩意兒不是新鮮事了,不過之前一直都懶得碰,直到現在做某個專案時,
寫完測試,就順便來導入 Travis CI,原本心想應該不會太難搞,但實際在導入的過程還是碰
上了一些鳥事,整個過程步驟如下:
1. 註冊帳號(一定要有 github accont) - Travis CI
2. 指定要加入 CI 的 repository
在 My Repositories 會列出目前個人有哪些 github repo 正在進行 CI,可以按下紅色框來加入新的 repo
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,寫完收工。
留言列表