12
11

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.

TypeScript + Mocha + Testem + CircleCIでカスタムビルド設定

Posted at

TypeScriptのプロジェクトで、テストをMocha + Chai + Sinon + Testemで書いています。
せっかくなのでCIに載せたいと思い、CircleCIを試してみました。
Testemでブラウザテストを実行できますが、CircleCIではtest_ciコマンドでXvfbでChromeとFirefoxのテストができます(PhantomJSも)。
CircleCIのデフォルトビルド設定ではテストが実行できないので、以下に各種設定とCicle.ymlによるカスタムビルド設定を共有します。

ソースコード

今回の設定を反映したソースコードはこちら

  • npmパッケージはローカルインストールで
  • 各種コマンドはpackage.json内に設定しnpm run ${command}で実行
  • pre-mergeテストっぽく、masterにmergeしても大丈夫かをチェックするため、git merge --no-commit origin/master をしてからtest_ciを走らせる

と言った感じで書いております。

参照元

本家の説明(Configuring CircleCI)

本家の説明(Test Environment)

基本事項

  • x86_64 Ubuntu 12.04上で実行されます

設定可能項目

リポジトリホーム直下にcircle.ymlをセットすることで、ビルド内容をカスタマイズすることができます。

  • machine
    • パッケージインストールや環境変数設定
  • checkout
    • 対象リポジトリのカスタマイズ
  • dependencies
    • プロジェクトspecificな環境構築
    • bundle installとか
  • database
    • DB migration等
  • test
    • テスト時の設定
  • deployment
    • デプロイのカスタマイズ

各コマンドは異なるshellで実行されるため、環境変数は共有されません。
ゆえに、globalな環境変数を設定するときは、machine configurationの中でenvironmentで指定する必要があります。

カスタムコマンドの実行タイミング指定

  • pre : CircleCI defaultの前に実行
  • override : CircleCI defaultの上書き
  • post : CircleCI defaultの後に実行

設定してみた

machine

今回はTypeScriptコードに対するテストなので、machineの設定を以下にしました。

circle.yml
machine:
  node:
    version: 0.11.13

Javaの場合はこんな感じ

circle.yml
machine:
  java:
    version: openjdk8

checkout

リポジトリはそのままデフォルトです。
新しいブランチをGithubにpushすると、自動的にそのブランチに対してテスト実行してくれます。

dependencies

以下のコマンドを実行。TypeScriptのコンパイルとかしてます。CircleCIのデフォルトではnpm installだけ実行してくれますが、TypeScriptコンパイルが必要だったのでoverrideで追加。postでも良かったかも。

circle.yml
dependencies:
  override:
    - npm install
    - npm run tsd_install
    - npm run bower_install
    - npm run build_staging

database

今回はなし。migration等行う場合はここで。

test

jsのテストを以下のように実行。

circle.yml
test:
  override:
    - npm run test_ci

deploy

また今度。

その他

  • Githubでプルリク送ると、featureブランチの最新テスト結果を見てGithub側でgood to merge等のバッジを出してくれる。
  • プルリクした時にマージ先のブランチへのpre-mergeテストをプルリクフックで実行してくれると嬉しいのだが(CircleCIの中の人によると、まだサポートはないとのこと)。
12
11
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
12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?