5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SML#のプロジェクトをWerckerでCIする

Posted at

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

関連リンク

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?