2012年1月27日金曜日

vs Travis CI

CIサーバの用意めんどくさいから、オンラインのJenkinsあったらいいのになーと思っていたら、githubのリポジトリをそのまま使える、Travis CIというCIをみつけました。
とりあえずgithubのOAuthでログインして雰囲気をみて終了。

で、その後ちょっとだけコードかいたりしていたら、gmailにメールがいっぱい!!!



どうやらいつのまにか、自分のリポジトリをCI対象にしていたようだ。
ということで、せっかくなのでStill Failingを解決してずっと使えるようにしようと思います。

まず調査。
1Using worker: ruby2.worker.travis-ci.org:travis-ruby-6
2
3$ cd ~/builds
4$ git clone --depth=100 --quiet git://github.com/e2kaneko/SocialLoginExamples.git e2kaneko/SocialLoginExamples
5$ cd e2kaneko/SocialLoginExamples
6$ git checkout -qf 4bea04f3da2290593d511804e3274821429835c1
7$ export TRAVIS_RUBY_VERSION=default
8$ rvm use default
9Using /home/vagrant/.rvm/gems/ruby-1.8.7-p357
10$ ruby --version
11ruby 1.8.7 (2011-12-28 patchlevel 357) [i686-linux]
12$ gem --version
131.8.15
14$ rake
15rake aborted!

Rubyでテストしようとしてる(笑)
.travis.ymlをリポジトリルートにおいてPHPを指定しないといけないらしい。 ということで、追加。

.travis.yml
language: php

php:
 - 5.3
 - 5.4
Using worker: php1.worker.travis-ci.org:travis-php-1
2
3$ cd ~/builds
4$ git clone --depth=100 --quiet git://github.com/e2kaneko/SocialLoginExamples.git e2kaneko/SocialLoginExamples
5$ cd e2kaneko/SocialLoginExamples
6$ git checkout -qf 479e254740fa4be905cfbc392eb640aa27044dfa
7$ phpenv global 5.3
8$ php --version
9PHP 5.3.9 (cli) (built: Jan 22 2012 13:00:07)
10Copyright (c) 1997-2012 The PHP Group
11Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
12 with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans
13$ phpunit
14PHPUnit 3.6.8 by Sebastian Bergmann.
16Usage: phpunit [switches] UnitTest [UnitTest.php]
17 phpunit [switches] <directory>

できた。
CakePHPの場合、通常はphpunitコマンドじゃなくてcakeコマンドでテスト実行するので、スクリプトを.travis.ymlに追加してみる。

 .travis.yml
language: php

php:
 - 5.3
 - 5.4

script:
 - ./lib/Cake/Console/cake testsuite app AllTests --stderr
19$ ./lib/Cake/Console/cake testsuite core AllTests --stderr
20-bash: ./lib/Cake/Console/cake: Permission denied

パーミッションあるのか。

 .travis.yml
language: php

php:
 - 5.3
 - 5.4

before_script:
 - chmod -R 777 ./lib/Cake/Console/cake

script:
 - ./lib/Cake/Console/cake testsuite app AllTests --stderr
19Welcome to CakePHP v2.0.4 Console
20---------------------------------------------------------------
21App : app
22Path: /home/vagrant/builds/e2kaneko/SocialLoginExamples/app/
23---------------------------------------------------------------
24CakePHP Test Shell
25---------------------------------------------------------------
26Error: Database connection "SQLSTATE[42000] [1049] Unknown database 'test'" is missing, or could not be created.
27#0

テスト用データベースに接続できなかった。
作る。

 .travis.yml
language: php

php:
 - 5.3
 - 5.4

env:
- DB=mysql


before_script:
 - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE test;'; fi"
 - chmod -R 777 ./lib/Cake/Console/cake

script:
 - ./lib/Cake/Console/cake testsuite app AllTests --stderr
13$ phpunit
14PHP Notice: Undefined offset: 0 in /home/vagrant/.phpenv/versions/5.3.9/share/pyrus/.pear/php/PHPUnit/Util/Configuration.php on line 860
15PHP Stack trace:

そういえば、コンフィグファイルなかった。

 .travis.yml
language: php

php:
 - 5.3
 - 5.4

env:
- DB=mysql

before_script:
 - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE test;'; fi"
 - chmod -R 777 ./lib/Cake/Console/cake
 - cp ./app/Config/const.php.default ./app/Config/const.php

script:
 - ./lib/Cake/Console/cake testsuite app AllTests --stderr




グリーン!!やったね!

SCMもCIもクラウドの時代ですよ、というわけで、おやすみなさい。

かねこ(^ν^)