Travis CI で継続的インテグレーション

前回の記事でPharo のプロジェクトを github.com で公開する方法について説明した。

今回は、 Travis CI を使ってテストを自動実行させる方法について説明する。

前提

  • Travis のアカウントを持っていること。
  • github.com と連携済みであること。
  • 自分のプロジェクトにテストパッケージを作っていること。

【重要】パッケージを保存する

先に進む前に、Monticello などでパッケージが保存されていることを確認する。テストも含め、いつでもパッケージ内容を元に戻せる状態にしておく方が安全・安心。

設定ファイルを作る

Travis CI でテストを実行させるために、リポジトリに2つのテキストファイルを作成する。

1つめは、 .smalltalk.ston である。内容は以下のようなもの。

SmalltalkCISpec {
  #loading : [
    SCIMetacelloLoadSpec {
      #baseline : 'MyProject',
      #directory : 'src',
      #platforms : [ #pharo ]
    }
  ]
}

MyProject の箇所は適宜修正する必要がある。

2つめは、 .travis.yml である。

language: smalltalk
sudo: false
notifications:
  email:
    on_success: never
    on_failure: always
os:
  - linux
smalltalk:
  - Pharo32-8.0
  - Pharo64-8.0

変更する必要のある箇所は、osのところと、smalltalkのところ。osは、他に osx が指定できる。(きっとwindowsも。詳しくは Travis CI のドキュメントを参照のこと)

smalltalk にはテストしたいイメージのバージョンを書く。このあたりの情報は以下のサイトで確認できる。

https://github.com/hpi-swa/smalltalkCI

上記を適当なテキストエディタで作成して、ローカルレポジトリのフォルダに保存しておく。

Shellで作業する

ローカルレポジトリ内で行った修正作業は、Iceberg では Commit できないので、Shell でコミットとプッシュを行う必要がある。作成したファイルをadd したあと、適当なコメントで commit して push する。

% git add .smalltalk.ston .travis.yml
% git commit -a -m 'add travis ci settings'
% git push

プッシュが完了したら Travis CI が自動的にテストを始めるはず。

Pharo で作業する

Pharo の環境にもどり、Iceberg でレポジトリのエントリを右クリックして Fetch を選ぶと、Up to date だったステータスが赤色の Detached Working Copy になる。

再度、右クリックして、 Repair Repository を選ぶ。そこで、Discard image changes and load repository version を選ぶ。ここで、Monticello などに保存していないパッケージの変更があると全て失われてしまうので、必ず保存しておく。問題なければ OK を押す。

続く画面で Checkout を押してレポジトリの状態が Up to date に戻れば完了。これ以降は、Iceberg でもコミット&プッシュ後に Travis CI が自動的に動き出すようになる。