[CI] 导入 Travis CI 笔记
虽然说 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: - [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,写完收工。
查看原文 >>