ククログ

株式会社クリアコード > ククログ > AppVeyorへのGitHubプロジェクトの登録方法

AppVeyorへのGitHubプロジェクトの登録方法

AppVeyorというWindows用の継続的インテグレーションサービスがあります。オープンソースプロジェクトは無料で利用できるので、GroongaMroongaで利用しています。普段はGNU/Linux環境で開発しているため、Windows上でのビルドが壊れていないか確認できてとても助かっています。

AppVeyorはWebのUIから新しくCI対象のプロジェクトを登録できますが、ここではAPI経由での登録方法を紹介します。API経由での登録方法は次の2つのドキュメントを読むとわかります。

AppVeyorのドキュメントではPowerShellとC#を使ってAPIを使う例が紹介されていますが、ここではcurlコマンドを使う方法を紹介します。

手順

ここではpgroonga/pgroongaプロジェクトをAPIで追加することにします。手順は次の通りです。

  1. APIトークンを確認する

  2. リクエスト用のJSONを作る

  3. リクエストを送る

APIトークンはAPI token - AppVeyorで確認できます。ここでは「xxxxxxxxxxxxxxxxxxxx」として説明をします。

リクエスト用のJSONは次のようにします。


{
  "repositoryProvider":"gitHub",
  "repositoryName":"pgroonga/pgroonga"
}

"repositoryName""pgroonga/pgroonga"は追加したいGitHubプロジェクトに変えてください。このファイルは/tmp/pgroonga.jsonに保存しているとして説明します。

これで準備ができたのでリクエストを送ります。ポイントは次の通りです。

  • APIトークンをHTTPヘッダーで指定する
  • Content-TypeHTTPヘッダーの値を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-TypeHTTPヘッダーの値をapplication/jsonに設定しなかった場合に発生します。(リクエストの内容をJSONで送っていると認識できずパラメーターの値を取得できていないために発生しているはず。)

まとめ

Windows用のCIサービスであるAppVeyorにAPIを使ってGitHubのプロジェクトを追加する方法を紹介しました。たくさんのプロジェクトがあるという場合はAPIを利用してみてはいかがでしょうか。