AppVeyorでVimプラグインリポジトリのCIを回す

AppVeyorでのVimプラグインのテストについてはid:thincaさんの記事が素晴らしくまとまっています。

Vim プラグインを Windows 環境でテストする - 永遠に未完成

しかし、上記記事だけではいくつか動かない点があったのと、 Web画面からではなくリポジトリにappveyor.ymlというファイルを追加して設定を指定する方法も見つけたので *1それについてブログに残そうと思います。

目次

  • thincaさんの記事に加えて行ったこと
  • appveyor.ymlで設定を指定する場合
    • Settings→Export YAMLでappveyor.ymlをエクスポートする
    • vital.vimのappveyor.ymlを参考に君だけの設定ファイルを作ろう
      • 作成したappveyor.yml

thincaさんの記事に加えて行ったこと

Buildを無効

AppVeyorではBuild、Test、Deployという3つのフェーズがあるようですが*2、デフォルトではBuildフェーズはMS Buildが走りますが、Vimプラグインリポジトリでは無用です。
というか*.*proj*.slnなんてファイルはリポジトリのどこにも置いていないのでこれを無効にしないとエラーになってしまいます。

以下は公式ドキュメントからの引用です。

参考ページ

Build phase

After cloning the repository AppVeyor runs MSBuild to build project sources and package artifacts.

The following command is used:

msbuild <project> /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"

Custom logger is required to push MSBuild warning and errors in real-time to build console. You may use this logger in your own build scripts.

<project> is a Visual Studio project (*.*proj) or solution (*.sln) file. If project or solution file is not specified on project settings AppVeyor searches for the first occurence of *.sln or *.*proj file in the build clone directory recursively.

無効にするにはまずSettings→Buildのページに行きます。
URL:

https://ci.appveyor.com/project/<user>/<repo>/settings/build

Before

After

CIスクリプトを登録

これはid:thincaさんの記事にもありましたが、2つだけ変更点があります。

  1. スクリプトvim-themisを持ってくるgit cloneコマンドに--depth 1を指定しています。
    • これがないと毎回履歴も含めてソースコードを持ってきてしまいます。 テスト用なので最新のソースコードだけで十分なはずです。
  2. リポジトリ自身をcloneするのにも--depth 1を指定

2は設定画面で行う必要があります。
Settings→Testsのページに行って、 以下の「Git clone depth」に「1」を入力して下さい。
URL:

https://ci.appveyor.com/project/<user>/<repo>/settings/tests

appveyor.ymlで設定を指定する場合

id:thincaさんの記事ではAppVeyorの設定画面で設定を変更していますが、 リポジトリのトップディレクトリにappveyor.ymlというファイルを追加して 設定を変更する方法があります。
この方がappveyor.ymlをコピペすれば この記事を見返す事すら必要なくなりそうで便利だと思ったので、 私はこっちの方法に変えました。

Settings→Export YAMLでappveyor.ymlをエクスポートする

もしあなたがVimプラグインリポジトリでCIを回したい訳ではない場合、 Settings→Export YAMLが良いでしょう。
ただしVimプラグイン用のappveyor.ymlとしてはvim-jp/vital.vim という素晴らしい例があったので、私はそちらを参考にしました(次章で説明)。

vital.vimのappveyor.ymlを参考に君だけの設定ファイルを作ろう

前述した「Export YAML」でエクスポートされたappveyor.ymlでも良いのですが、 私はvital.vimのappveyor.ymlを参考にしました。
VimプラグインのCIがしたかったらとりあえずvital.vimの.travis.ymlとappveyor.yml を見ておけばまず間違いありません。
また、設定ファイルの意味が分からない部分はgit blameして意味を探りました。

そしてappveyor.ymlが出来上がったらリポジトリにpushしましょう。
pushしたらappveyor.ymlの設定を元にCIが走ります。
どうやらWeb上の設定よりappveyor.ymlの設定が優先されるようです (間違ってるかもしれませんので詳しく知りたい方は公式情報にあたってください)。
私は次リポジトリ作る時ハマりたくないので、 一応上記のWeb上で行った設定を全てデフォルトに戻して 再度ビルドを実行しましたが問題なく動きました。

作成したappveyor.yml

リンク先を見て下さい。

https://github.com/tyru/open-browser.vim/blob/6a8eb2572d5c8f31c141d669be94db71cfe42d9e/appveyor.yml

*1:まぁvim-jp/vital.vimリポジトリからの情報ですが

*2:全部の設定項目を 見た訳ではないのでもっとあるかも