Travisを使ってみる

アバター
コスモ
記事: 3
登録日時: 14年前
連絡を取る:

Travisを使ってみる

投稿記事 by コスモ » 12年前

Travis CI?

Travis CIというのは
CIのシステムの一つで、環境に依存するバグを発見し、プロジェクトのソースコードが正常に機能するかどうかを自動でチェックするためのものです。

同じようなものにJenkinsがありますが、これはローカルにJenkins用のサーバーを立てないといけないので少しハードルが高めです。

Githubにソースコードをプッシュしていて公開リポジトリならTravis CIという方法が手軽で良いです。

Haskellで書いたソフトウェアのリポジトリでTravis CIを試す

てな訳で、前回の記事で書いてGithubにプッシュしてあるリポジトリをTravisCIに接続して依存関係が壊れていないか
そして、実際にビルドが通るかどうかを試してみました。

Travis CIのドキュメントによると、
Rubyや、C、C++やJavaのような言語だけではなくHaskellにも対応しているようですね。

さすがメジャーな言語Haskell

冗談は置いておいて、Haskellでのtravis CIへの接続の仕方はとても簡単です。

Travis CIへはGithubアカウントでログインすることができ、接続したいリポジトリの接続をONにすれば完了です。
最初、この接続をONにするところを忘れていて、travis CI向けのYAMLをリポジトリにプッシュしてもTravisが走らずに頭を悩ませました。
何かを始める時にはドキュメントをしっかり読みましょう。

Haskell用の最小限の設定は次のようになります。

CODE:

language: haskell
これを記述した.travis.ymlをリポジトリのルートに配置してプッシュすればTravisが走り出します。

自動で環境が作られた上でビルドが走るのは素敵ですね。

しかし、この状態ではデフォルトの設定

CODE:

cabal configure --enable-tests && cabal build && cabal test
になってしまいます。

これを例えば、
  1. 依存関係をチェックだけする
  2. 実行ファイルに依存するライブラリだけをインストール
  3. 実行ファイルはビルドを行うが、その自動テストの実行はスキップする
といった場合にはデフォルトの設定では不満です。これを出来るようにするには以下のように.travis.ymlを書き換えます。

CODE:

language: haskell

script:
  - cabal configure && cabal build

install:
  - cabal install --dry-run --only-dependencies
  - cabal install --only-dependencies
こうすることで、

CODE:

$ git push origin master
してやると、自動でTravisが動き出します。

プロジェクトのREADME.mdにTravisのビルド結果を表示するようなMarkdownを記述してやると、
[build|passing]のような画像まで表示させられます!
(下図参照:

画像

他のビルド環境を用意してビルドが通るかどうかを検査するのがめんどくさいという人はyamlを書くだけのTravis CI、オススメです。

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前

Re: Travisを使ってみる

投稿記事 by h2so5 » 12年前

Pull-Requestを発行した時に、そのコミットでビルド&テストが通るかチェックしてくれるのは強力だと思いました。

アバター
コスモ
記事: 3
登録日時: 14年前
連絡を取る:

Re: Travisを使ってみる

投稿記事 by コスモ » 12年前

そうですね。Pull Requestを発行した時にそのPull Requestが壊れていないかを自動で確認できるのは便利だと思います。
ただ、よくよくTravis CIの動きを見てみるとmasterブランチにpushした時にも.travis.ymlに記述した設定通りに動いているようですよ。