wercker_swift

werckerでサーバーサイドSwiftのCIをしてみる

先日、werckerを試してみて、なかなか良かったので早速SwiftでのCIをやってみることにしました。

今回やること

今回、やろうとしているのは、とりあえずGithubにプッシュされた時にwercker上でSwiftのテストコードをビルドし実行させるということのみです。

また、ソースコードはGithubに一式置いています。
https://github.com/d-abe/swift_spectre_wercker

Swiftのテストライブラリには、Spectreを選びました。

BDDスタイルなのと、Swift Package Manager(以下SPM)に準拠していて使い方がわかりやすかったことから決めました。

Spectreの使い方

SPMから使うので、spectre-buildというのを入れます。Package.swiftは以下のようになります。

テストの書き方は、

という感じです(公式サイトのサンプルまんま)。

これを、以下のように動かします。

# ビルドして
$ swift build
# テストコードを起動
$ .build/debug/spectre-build

werckerのDocker環境

werckerは以前説明したようにDockerで動きますのでイメージが必要です。

今回、Kituraを試した時に作ったDockerfileのイメージをDocker Hubにpushしてみたのでそれを使います(ただし、今回はKituraは出てきません。今後使う予定!)。

ちなみにDockerfileはこんな感じです。

wercker.yml

では、これを使ってwercker.ymlを作ります。
といっても、build時にswift buildと.build/debug/spectre-buildを実行するだけなので簡単ですね。

ここで、devパイプラインも作っているのですが、私の環境が悪いのかわからないのですが以下のスクリーンショットのようなエラーが出てうまく動きませんでした。

スクリーンショット 2016-02-26 0.22.57

ここには写っていませんが、golangのエラーがずらずらずら・・とこの後も出ています。原因不明です。。

ローカルでビルドしてみる

次に、ローカルで実験してみます。wercker-cliを入れていれば、

$ wercker build
--> Executing pipeline
--> Running step: setup environment
Pulling from dabe/kitura-ubuntu: latest
:(省略)
Linking Library:  .build/debug/Commander.a
Compiling Swift Module 'spectrebuild' (2 sources)
Linking Executable:  .build/debug/spectre-build
Compiling Swift Module 'swift_spectre_wercker' (1 sources)
Linking Executable:  .build/debug/swift_spectre_wercker
-> a person
  -> has a name
  -> returns the name as description

2 passes and 0 failures
--> Steps passed: 36.11s
--> Pipeline finished: 37.25s

と、出て成功するはずです。

wercker上でビルド

ここまできたら、werckerのアプリケーションを作成してビルドさせてみます。先ほどのソース一式をコミットしたら、werckerで取り込んでアプリケーションを作成します。wercker.ymlは既にあるので早速ビルド!

d abe swift_spectre_wercker   build on branch undefined

どうやらうまくいきました。

終わりに

今後はKituraを使ってBDDでテストをしつつまずはシンプルなWebアプリケーションを作ってみたいです。

なお今回残念だったのが、MacのローカルでKituraのライブラリを入れてspectre-buildを動かそうとするとpcre2関連のライブラリエラーが出てしまってうまく動きませんでした。。

LINEで送る
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です