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 と併用するなどして利用することをオススメします。