kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Visual Studio Team Services CI/CDアドベントカレンダー:外部レポジトリ(GitHub)をビルドする(16日目)

はじめに

これはVisual Studio Team Servicesアドベントカレンダー16日目の記事です。

qiita.com

今までVSTSの内部レポジトリのビルドについて紹介していましたが、今日は外部のレポジトリ具体的にはGitHubのビルドについて紹介します。

VSTSはオールインワンでそろっていますが、外部サービスとも連携します。VSTSもよくはなっていますが、VSTSはクローズのみなので、オープンソースの開発をするならGitHubということは多いと思います。この記事ではVSTSのビルドサービスをGitHubのレポジトリに対して実行する方法について紹介します。

前提条件

以前も書きましたが、GitHubのレポジトリをビルドする場合、ビルド定義を作る人がownerになっている必要があります。Contributorではコミット時のビルドの設定ができないので、注意してください。スケジュールビルドはできます。

f:id:kkamegawa:20171216204504p:plain

GitHubへの認証を設定します。OAuthかPATを使うかお好みで。

f:id:kkamegawa:20171216204454p:plain

対象のレポジトリを選択します。ちょうど先日GitHubにConnect();で使われたデモソリューションのSmartHotel 360が公開されたので、forkしてみました。

f:id:kkamegawa:20171216204455p:plain

ここから先はVSTS内のレポジトリをビルドするときと変わりありません。ビルド定義を作って、ビルドキューに入れてみます。

f:id:kkamegawa:20171216204456p:plain

Hosted VS2017を指定します。

f:id:kkamegawa:20171216204457p:plain

普通にビルド完了ですね。ちなみにこのソリューションのビルド結構時間がかかります。10分弱使いました。

コミット時にビルドする

f:id:kkamegawa:20171216204458p:plain

GitHubの特定のブランチにコードがpushされたときにビルドする、pull request時にビルドするということもできます。

ただ、pull requestのビルドで外部レポジトリを指定した場合、git pullに失敗していました。これはちょっと調べてみます。それは置いといて、GitHubでpull requestしてみましょう。

f:id:kkamegawa:20171216204459p:plain

devブランチを作って、適当に編集して、自分のmasterにpull requestをだしてみます。

f:id:kkamegawa:20171216204500p:plain

mergeします。

f:id:kkamegawa:20171216204501p:plain

今回はpull requestとmasterへのcommitでビルドのトリガーをかけているので、ビルドが二つキューに入れられています。pull requestでCIをかける場合、このようにビルドがキューにはいるので、注意してください。

f:id:kkamegawa:20171216204502p:plain

masterへのコミットでビルドトリガーを指定しているので、自動的にビルドが実行されました。

ビルド結果の見方

ビルド結果ですが、自分がCIを設定しているので、mineハブを見ればいいか…と思うのですが、実はそうではありません。

f:id:kkamegawa:20171216213316p:plain

GitHubのmasterにコミットされたコードのビルド結果は20171216.3ですが、mineハブで表示されているのは20171216.1という、最初に自分で明示的にキューに入れたビルドだけです。

実はpull requestなどのVSTSが外部イベントにより自動的に発生するビルドに関しては、mineには表示されません。以前はmineにこの辺のCIによるビルド品質レポートも含められていたのですが、わかりにくいということでフィードバックにより変更されました(私も最初わからなくて聞きました)。

TFS 2017ではたぶんこのレポートはCI含めて表示されているはずなので、見るときには気を付けてください。

f:id:kkamegawa:20171216204503p:plain

CIおよび、ユーザーの明示的なビルド指示を含めて全部見たい場合はDefinitionsハブで見てください。

こちらはCIやほかの人が実行したビルド結果を含めて成功率が表示されます。