AppVeyor で Perl のテストを実行する


AppVeyor とは?

AppVeyor は OS に Windows を使っていることを特徴とした CI (継続的インテグレーション) サービスです。Travis CI と同じように、オープンソースプロジェクトでは、無料で使用できます。

なぜ Windows で Perl を CI するのか ?

オープンソースプロジェクトでは、Perl の CI として、Travis CI が一般に使われています。Travis CI は Linux (Ubuntu) で動作しており、Build Matrix も使え、CI としての機能は十分です。

しかし、プロジェクトの開発者や、ライブラリの利用者は、Unix 系 OS を利用している人だけとは限りません。Unix 環境であることを前提としたコードは、Windows では正常に動作しません。そして、意図せず、そのようなコードを産んでしまう可能性があります。そのような事態を、Windows でも並行して CI することにより、未然に防ぐことができます。

AppVeyor の特徴

  • オープンソースプロジェクト 無料
  • GitHub 連携が可能
  • appveyor.yml にビルドスクリプト記述し実行
  • Windows 系 OS (Windows Server 2012)
    • 毎回クリーンな Virtual Machine を起動し、その中で実行
  • 管理者権限 (Administrators グループ) を持つユーザーで動作
  • Chocolatey が利用可能 (Windows 版パッケージマネージャー)
    • 必要なソフトウェアをコマンドから簡単にインストール可能

AppVeyor の利用方法

まず、AppVeyor に GitHub アカウントでサインアップし、有効にします。そして、appveyor.yml を対象のリポジトリに配置すれば OK です。

設定ファイルの作成

AppVeyor でテストを実行するには、appveyor.yml を作成する必要があります。実際に動作する appveyor.yml のサンプルを以下に載せますので、プロジェクトに応じてカスタマイズしてください。

branches:
  # ビルドするブランチを制限する場合
  only:
    - master

init:
  - git config --global core.autocrlf input

install:
  # Chocolatey から任意バージョンの Perl をインストールする
  # https://chocolatey.org/packages/StrawberryPerl
  - choco install strawberryperl -version 5.20.1.1
  - SET PATH=C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;%PATH%

  # Carton を利用可能にする
  - cpanm install Carton
  - carton install

build: off

test_script:
  # テストを実行する
  - carton exec prove --norc --rc=.proverc -r t

cache:
  # Carton のインストール先をキャッシュする
  # 実用的な時間でテストするためには必須
  - local

# 高速化のために、レポジトリをシャロークローン (--depth 1) する
shallow_clone: true

参考

注意点

  • コマンドは、cmd.exe 経由で実行されます。ps: と行頭に付けた場合、PowerShell 経由で実行されます。
  • Unix 環境で用いている & (バックグラウンド実行) などは Windows では利用できないので、注意してください。

その他

AppVeyor はビルドまでの時間、ビルドの時間が Travis CI と比較すると著しく遅いです。そのため、ビルドするブランチを master, develop に絞ったり、他の CI と併用するなどして利用することをオススメします。

関連記事