來試試看Travis CI的服務-- CI, Mocha, Chai and Node.js
References:
1. http://visionmedia.github.io/mocha/
2. https://travis-ci.org/
3. http://josephj.com/entry.php?id=251
4. http://martinfowler.com/articles/continuousIntegration.html
5. http://blog.pluralsight.com/2012/09/11/tdd-vs-bdd/
6. http://jenkins-ci.org/
7. http://chaijs.com/
1. 概述
這篇文章主要是來紀錄我如何去使用CI( Continuous Intergration),什麼是 CI 呢?
可以參考ref. 3跟4, CI簡單來說就是將軟體開發每天會做的事整合起並且自動化,每個
整合至少會包含自動建構(包含 test)和錯誤通知。當然也可以加入你們團隊在軟體開發會
用的任何方法。例如Code lint來找出Code中可能的bug或是自動產生技術文件。
CI應該會做的事:
2. Mocha + Chai
Mocha是Javascript Test framework他可以跑在node.js跟browser上,而且他的
功能也滿多的(參考ref. 1)。Chai是BDD/TDD assertion library也是可以跑在node.js跟
browser上(參考ref. 7)。
3. Travis CI
Travis CI是持續整合的服務而且他跟Github有做了一些整合,並且你的Project
是放在Github上並且是Open的話。他也讓你免費使用這個服務。當然他也是有收費的
服務。從官方文件來看他支援了C/C++, PHP, Python, Ruby, Scala, Perl, Javascript
(with Node.js), Java, Haskell, Go, Erlang, Clojure and Groovy。看得出來他支援的語言
也真是多。如果不想使用線上服務的話,也是可以架設自己的CI的服務Jenkins (ref. 6)。
4. How to do use Travis CI?
以下的範例我認為你已經安裝了Git跟申請好了GitHub跟Travis CI的帳號。
哪麼首先建立Node.js測試環境,以下是我測試的環境跟測試內容。
目錄架構
├─ Makefile
├─ README.md
├─ .gitignore
├─ .travis.yml
├─ package.json
└─ test
└── Test.js
* Makefile
* .gitignore
* .travis.yml
這個檔案是Travis CI一定要有的,而且在commit之前請務必要做驗證的動作請將以下
的檔案內容貼到http://lint.travis-ci.org/這個網站來做格式檢查不然可能會在build的過程
就出錯。還有我可以設定多個版本的node.js來測試我們的Code, 例如下面的檔案說明了我
需要0.11, 0.10, 0.8和0.6的node來做測試。
* package.json
因為Travis CI要執行測試指令的話,會經過package.json的scripts選項的test來執行
所以我的話是執行Makefile來完成(Travis CI其實會下npm test來完成test的動作)
* 接著建立git repository吧
設定完之後,請修改的本地的檔案然後commit一版然後在push到github上,接著回到
https://travis-ci.org/ 就會看到Travis CI就會開始做整合測試了
1. http://visionmedia.github.io/mocha/
2. https://travis-ci.org/
3. http://josephj.com/entry.php?id=251
4. http://martinfowler.com/articles/continuousIntegration.html
5. http://blog.pluralsight.com/2012/09/11/tdd-vs-bdd/
6. http://jenkins-ci.org/
7. http://chaijs.com/
1. 概述
這篇文章主要是來紀錄我如何去使用CI( Continuous Intergration),什麼是 CI 呢?
可以參考ref. 3跟4, CI簡單來說就是將軟體開發每天會做的事整合起並且自動化,每個
整合至少會包含自動建構(包含 test)和錯誤通知。當然也可以加入你們團隊在軟體開發會
用的任何方法。例如Code lint來找出Code中可能的bug或是自動產生技術文件。
CI應該會做的事:
- Automatic Build Environment
- Code Lint (Check Coding conventions) (optional)
- Automatic Generate Document (optional)
- Unit Test
- Error Report
2. Mocha + Chai
Mocha是Javascript Test framework他可以跑在node.js跟browser上,而且他的
功能也滿多的(參考ref. 1)。Chai是BDD/TDD assertion library也是可以跑在node.js跟
browser上(參考ref. 7)。
3. Travis CI
Travis CI是持續整合的服務而且他跟Github有做了一些整合,並且你的Project
是放在Github上並且是Open的話。他也讓你免費使用這個服務。當然他也是有收費的
服務。從官方文件來看他支援了C/C++, PHP, Python, Ruby, Scala, Perl, Javascript
(with Node.js), Java, Haskell, Go, Erlang, Clojure and Groovy。看得出來他支援的語言
也真是多。如果不想使用線上服務的話,也是可以架設自己的CI的服務Jenkins (ref. 6)。
4. How to do use Travis CI?
以下的範例我認為你已經安裝了Git跟申請好了GitHub跟Travis CI的帳號。
哪麼首先建立Node.js測試環境,以下是我測試的環境跟測試內容。
目錄架構
├─ Makefile
├─ README.md
├─ .gitignore
├─ .travis.yml
├─ package.json
└─ test
└── Test.js
* Makefile
REPORTER = spec
test:
@NODE_ENV=test ./node_modules/.bin/mocha \
--reporter $(REPORTER)
test-w:
@NODE_ENV=test ./node_modules/.bin/mocha \
--reporter $(REPORTER) \
--growl \
--watch
.PHONY: test test-w))
* .gitignore
node_module *.swp
* .travis.yml
這個檔案是Travis CI一定要有的,而且在commit之前請務必要做驗證的動作請將以下
的檔案內容貼到http://lint.travis-ci.org/這個網站來做格式檢查不然可能會在build的過程
就出錯。還有我可以設定多個版本的node.js來測試我們的Code, 例如下面的檔案說明了我
需要0.11, 0.10, 0.8和0.6的node來做測試。
language: node_js
node_js:
- "0.11"
- "0.10"
- "0.8"
- "0.6"
* package.json
因為Travis CI要執行測試指令的話,會經過package.json的scripts選項的test來執行
所以我的話是執行Makefile來完成(Travis CI其實會下npm test來完成test的動作)
{ "name": "mocha_test", "version": "0.0.1", "dependencies": { "mocha": "~1.10.0", "chai" : "~1.7.2" }, "scripts": { "test": "make test" } }
* test/Test.js
這邊我就不說講了就很簡單測試'test'是不是等同於'test'而已mocha+chai有時間我在來寫一篇文章來說明。
var chai = require('chai'); var assert = chai.assert; describe('Test mocha ',function() { before(function(done) { // Create something before testing // then using done() to finish done(); }); it('should equal test',function() { assert.equal( 'test', 'test' ); }); });
當你建立好以上的檔案可以執行下面的指令在本地端先做測試:
$> npm install && npm test
如果成功的話應該會看到類似以下的畫面 :
* 接著建立git repository吧
$> git init
$> git add .
$> git commit -m 'mocha test'
建立Github的repository,可以參考https://help.github.com/articles/create-a-repo
Push 你的 repository到GitHub吧
$> git remote add origin https://github.com/user/repo.git
$> git push origin maste
* Travis CI
接著進入https://travis-ci.org/profile ,看到自己剛剛上傳的專案把他設定會ON
設定完之後,請修改的本地的檔案然後commit一版然後在push到github上,接著回到
https://travis-ci.org/ 就會看到Travis CI就會開始做整合測試了
留言