SML#で書かれたプロジェクトをWerkecrでCIできるようにする方法を書きます。
前提
- 対象のプロジェクトがGithub/Bitbucketにあること(プライベートレポジトリ可)。
-
make check
等で単体テストが走るようになっていること。単体テストを書く際はSMLUnitがオオススメです。(というか他に選択肢がない)
設定方法
Werckerの設定
Werckerのアカウント取得やプロジェクトの作成等が必要ですが、そのあたりについてはGithubのプライベートリポジトリでも無料で使えるCI、Werckerを使ってrails newからHerokuのデプロイまでやってみるの「Werckerを設定する」が分かりやすいです。
wercker.ymlの作成
SML#インストール済のOS(werckerではboxと呼ばれる)はすでにmzp/smlsharp-boxとして用意してありあす。
そのため、wercker.yml
には以下のように書けばOKです。(make check
で単体テストが走る場合)
box: mzp/smlsharp-box@1.0.0
build:
steps:
- script:
name: Run unit tests
code: make check
ビルド結果の通知等を行ないたい場合は、werkecr stepからnotify
を含むstepを探してみるといいと思います。個人的にはwercker-step-http-notifyがオススメです:D。
おまけ: カスタムboxの作り方
werckerは非常に自由度が高いので、今回のように独自の処理系をインストールした環境をあらかじめ作っておくことができます。
これはCreating your own boxes with Bashにあるようにwerkecr-box.yml
を書くことで実現できます。
今回は、以下のようにUbuntu 12.04の上に依存パッケージ(libc6とgmp)を導入し、SML#のサイトで配布しているdebからSML#コンパイラのインストールを行なっています。
name: smlsharp-box
version: 1.0.0
inherits: wercker/ubuntu12.04-webessentials@1.0.2
type: service
platform: ubuntu@12.04
description: wercker box for SML# a new programming language in the Standard ML family
keywords:
- sml
- smlsharp
packages:
- smlsharp@2.0.0
script: |
sudo apt-get update -y
sudo apt-get install -y libc6-dev-i386 lib32gmp-dev
sudo wget http://www.pllab.riec.tohoku.ac.jp/smlsharp/download/smlsharp-2.0.0-2_ubuntu-amd64.deb
sudo dpkg -i smlsharp-2.0.0-2_ubuntu-amd64.deb
関連リンク
- mzp/box-smlsharp - Github
- mzp/tab_space_bot - Github - 実際に使っている例