はじめに
これはVisual Studio Team Servicesアドベントカレンダー16日目の記事です。
今までVSTSの内部レポジトリのビルドについて紹介していましたが、今日は外部のレポジトリ具体的にはGitHubのビルドについて紹介します。
VSTSはオールインワンでそろっていますが、外部サービスとも連携します。VSTSもよくはなっていますが、VSTSはクローズのみなので、オープンソースの開発をするならGitHubということは多いと思います。この記事ではVSTSのビルドサービスをGitHubのレポジトリに対して実行する方法について紹介します。
前提条件
以前も書きましたが、GitHubのレポジトリをビルドする場合、ビルド定義を作る人がownerになっている必要があります。Contributorではコミット時のビルドの設定ができないので、注意してください。スケジュールビルドはできます。
GitHubへの認証を設定します。OAuthかPATを使うかお好みで。
対象のレポジトリを選択します。ちょうど先日GitHubにConnect();で使われたデモソリューションのSmartHotel 360が公開されたので、forkしてみました。
ここから先はVSTS内のレポジトリをビルドするときと変わりありません。ビルド定義を作って、ビルドキューに入れてみます。
Hosted VS2017を指定します。
普通にビルド完了ですね。ちなみにこのソリューションのビルド結構時間がかかります。10分弱使いました。
コミット時にビルドする
GitHubの特定のブランチにコードがpushされたときにビルドする、pull request時にビルドするということもできます。
ただ、pull requestのビルドで外部レポジトリを指定した場合、git pullに失敗していました。これはちょっと調べてみます。それは置いといて、GitHubでpull requestしてみましょう。
devブランチを作って、適当に編集して、自分のmasterにpull requestをだしてみます。
mergeします。
今回はpull requestとmasterへのcommitでビルドのトリガーをかけているので、ビルドが二つキューに入れられています。pull requestでCIをかける場合、このようにビルドがキューにはいるので、注意してください。
masterへのコミットでビルドトリガーを指定しているので、自動的にビルドが実行されました。
ビルド結果の見方
ビルド結果ですが、自分がCIを設定しているので、mineハブを見ればいいか…と思うのですが、実はそうではありません。
GitHubのmasterにコミットされたコードのビルド結果は20171216.3ですが、mineハブで表示されているのは20171216.1という、最初に自分で明示的にキューに入れたビルドだけです。
実はpull requestなどのVSTSが外部イベントにより自動的に発生するビルドに関しては、mineには表示されません。以前はmineにこの辺のCIによるビルド品質レポートも含められていたのですが、わかりにくいということでフィードバックにより変更されました(私も最初わからなくて聞きました)。
TFS 2017ではたぶんこのレポートはCI含めて表示されているはずなので、見るときには気を付けてください。
CIおよび、ユーザーの明示的なビルド指示を含めて全部見たい場合はDefinitionsハブで見てください。
こちらはCIやほかの人が実行したビルド結果を含めて成功率が表示されます。