ここに書いてある内容はすでに古い可能性があります。2015/02/07 現在で beta ですが、travis 側でも Elixir プロジェクトのサポートが入っていて、それに従うだけで Elixir プロジェクトを CI できます。詳しくは以下を見てください。
やることは2つあります。
- travis ci で対象プロジェクトを有効に設定
- GitHub に
.travis.yml
を push
今回は後者の設定ファイルの書き方を扱うので、1. については参照先だけ載せて簡単に。
travis ci で対象プロジェクトを有効に設定
Travis CI で対象となるプロジェクトを有効にしておきます。
http://mochizblog.heroku.com/21 こちらの記事などを参考にサインアップ、プロジェクトの設定をしてください。
.travis.yml
の書き方
色々と Elixir のプロジェクトにある.travis.yml
を見てみましたが、比較的よく使われてそうなものを一例として紹介します。
これをプロジェクトのトップディレクトリに.travis.yml
として保存して、git push して GitHub に反映することで、travis 側で CI してくれます。
language: erlang
otp_release:
- 17.0
before_install:
- wget http://s3.hex.pm/builds/elixir/master.zip
- unzip -d elixir master.zip
before_script:
- export PATH=`pwd`/elixir/bin:$PATH
- mix local.hex --force
- mix deps.get --only test
script:
- mix test
やっていることは、以下の通り。
- 言語として Erlang を選択
- Erlang の OTP リリースバージョン指定
- Elixir のダウンロード、解凍、PATH 設定
- テスト対象プロジェクトの deps.get
- test の実行
余談
ちなみに最初に記事を書いたときは Elixir ダウンロード部分が以下のように Elixir を git clone して、コンパイルするスタイルにしてました。しかし最近書かれているライブラリを見ると、ほとんどがダウンロードして解凍するようになっています。実際に ltsvex で試してみたところ、今まで 100 秒かかっていた Elixir のコンパイル処理がなくなり、1 秒かからないくらいで test 環境が整うようになりとても快適になりました。
before_install:
- git clone https://github.com/elixir-lang/elixir
- cd elixir && make && cd ..
設定例
試しに ltsvex で設定してみましたので、ご参考にしていただければと。
https://github.com/ma2gedev/ltsvex/blob/master/.travis.yml
おまけ
以下を README.md に記載しておくと、GitHub で見たときに Build Status バッジをつけれます。ma2gedev/ltsvex
となっている箇所を自分のものに変更すれば設定できます。
[![Build Status](https://travis-ci.org/ma2gedev/ltsvex.png?branch=master)](https://travis-ci.org/ma2gedev/ltsvex)
SEE ALSO
http://about.travis-ci.org/docs/user/languages/erlang/
https://github.com/myfreeweb/httpotion/blob/master/.travis.yml
https://github.com/ericmj/decimal/blob/master/.travis.yml
https://github.com/devinus/poison/blob/master/.travis.yml
この記事は Elixir Advent Calendar 2013 の 21 日目です。明日は @keithseahus さんです。
Comments
Let's comment your feelings that are more than good