AppVeyorというWindows用の継続的インテグレーションサービスがあります。オープンソースプロジェクトは無料で利用できるので、GroongaとMroongaで利用しています。普段はGNU/Linux環境で開発しているため、Windows上でのビルドが壊れていないか確認できてとても助かっています。
AppVeyorはWebのUIから新しくCI対象のプロジェクトを登録できますが、ここではAPI経由での登録方法を紹介します。API経由での登録方法は次の2つのドキュメントを読むとわかります。
AppVeyorのドキュメントではPowerShellとC#を使ってAPIを使う例が紹介されていますが、ここではcurl
コマンドを使う方法を紹介します。
手順
ここではpgroonga/pgroongaプロジェクトをAPIで追加することにします。手順は次の通りです。
-
APIトークンを確認する
-
リクエスト用のJSONを作る
-
リクエストを送る
APIトークンはAPI token - AppVeyorで確認できます。ここでは「xxxxxxxxxxxxxxxxxxxx」として説明をします。
リクエスト用のJSONは次のようにします。
{
"repositoryProvider":"gitHub",
"repositoryName":"pgroonga/pgroonga"
}
"repositoryName"
の"pgroonga/pgroonga"
は追加したいGitHubプロジェクトに変えてください。このファイルは/tmp/pgroonga.json
に保存しているとして説明します。
これで準備ができたのでリクエストを送ります。ポイントは次の通りです。
- APIトークンをHTTPヘッダーで指定する
Content-Type
HTTPヘッダーの値をapplication/json
にする- HTTPメソッドはPOSTにする
- APIのURLは
https://ci.appveyor.com/api/projects
コマンドラインにすると次のようになります。
% curl \
--header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data-binary @/tmp/pgroonga.json \
https://ci.appveyor.com/api/projects
成功すると次のようなレスポンスが返ってきます。
{
"projectId": 114495,
"accountId": 15636,
"accountName": "groonga",
"builds": [],
"name": "pgroonga",
"slug": "pgroonga",
"repositoryType": "gitHub",
"repositoryScm": "git",
"repositoryName": "pgroonga/pgroonga",
"isPrivate": false,
"skipBranchesWithoutAppveyorYml": false,
"enableSecureVariablesInPullRequests": false,
"enableDeploymentInPullRequests": false,
"rollingBuilds": false,
"created": "2015-04-28T02:41:14.6822217+00:00"
}
失敗すると次のようなエラーメッセージが返ってきます。
{
"message": "The request is invalid.",
"modelState": {
"request.RepositoryProvider": [
"The RepositoryProvider field is required."
],
"request.RepositoryName": [
"The RepositoryName field is required."
]
}
}
なお、このエラーメッセージはContent-Type
HTTPヘッダーの値をapplication/json
に設定しなかった場合に発生します。(リクエストの内容をJSONで送っていると認識できずパラメーターの値を取得できていないために発生しているはず。)
まとめ
Windows用のCIサービスであるAppVeyorにAPIを使ってGitHubのプロジェクトを追加する方法を紹介しました。たくさんのプロジェクトがあるという場合はAPIを利用してみてはいかがでしょうか。