21st
.travis.ymlめぐり
Travis CI というGithubと連動してGithubにコミットすると勝手にテストが走ってテスト結果を通知してくれる、ようするにJenkins as a Serviceみたいなやつがあって、とても便利なので知らなかった人はこの際使いましょう。
そんでTravisの設定ファイルが.travis.ymlで、プロジェクトのディレクトリに置いておくだけでいいんだけど、ごく最近rubyの.travis.ymlを書き直したので、そのときに調べたものを開陳しておこうというエントリ。
https://github.com/ruby/ruby/blob/trunk/.travis.yml
これが最終的に今のRubyの.travis.ymlで、俺の趣味によるやりすぎ気味のコメントと、
language: c
の例としてはもっとも網羅的な(つまり微に入り際に穿った)記述が特徴。Cのプロジェクトはまずこれをコピペして始めると良いと思われる。https://github.com/rubinius/rubinius/blob/master/.travis.yml
C++のプロジェクトの例としてRubinius。まあC++はCと大差ない。とはいえ
script: rake
となっているあたり、標準的といえるかはやや疑問ではあるか。https://github.com/jruby/jruby/blob/master/.travis.yml
Javaの例としてJRuby。JavaはJDKが選べるのだね。テストはantのようだ。
https://github.com/cucumber/cucumber-jvm/blob/master/.travis.yml
もういっちょJava、こっちはMaven。
https://github.com/parrot/parrot/blob/master/.travis.yml
Perlの例(parrot)。あと
env:
の使い方が特徴的だ。ここまでやればだいぶ網羅的なテストだと思われる。https://github.com/php/php-src/blob/master/.travis.yml
PHPの例。PHPでべたに書くのはやはり無理があるのか、複数の小さいシェルスクリプトに分けて書いてあるのが分かる。ただテスト本体はPHPのCLIからやっているようだね。
https://github.com/joyent/node/blob/master/.travis.yml
Node.js…? これ
language:
の使い方間違ってるだろ。language:
は自分が何者であるかを自己主張するためのフィールドじゃないよ。そのソースコードが何で書いてあるかを記してください。https://github.com/twitter/bootstrap/blob/master/.travis.yml
もうすこしましなnodeの例を探していたらTwitter Bootstrapにちょっとあった。しかしこれではシンプル過ぎて何が何やら?
https://github.com/linkedin/inject/blob/master/.travis.yml
さらに発展的なnodeの例。裏で
node makefile.js server &
してサーバを起動した後 phantomjs でテストしてる。しかしサーバを止める後処理を書いた方が…https://github.com/pydata/pandas/blob/master/.travis.yml
Pythonの例。Travis自体が欧州発ということもあってか、(Travis自体はRubyで書かれているのに)PythonのプロジェクトのTravis率は高い気がする。これのその他の特徴として
script:
を複数書いているという点があり、そういうのを俺は他に見たことがない。このセッティングで片方失敗して片方成功したらどうなるのか?https://github.com/travis-ci/travis-ci/blob/master/.travis.yml
Rubyの例は数が沢山ありすぎて困るので、ここではTravis自身のものを出しておこう。ひょっとして意図的に標準的な記述にとどめてある? これはこれで参考になる。
https://github.com/rails/rails/blob/master/.travis.yml
きわめつけに複雑な例。ci/travis.rb も参考に。これはちょっとやりすぎ感がある…
その他TravisにはClosure, Erlang, Groovy, Haskell, Scalaのモードがあるようですが、これらの言語実装もGithubに置いてあるようですが、それぞれ .travis.yml はありませんでした。Travis側からの愛はこれらの言語には伝わっていないようですね。