kkamegawa's weblog

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

Visual Studio Team Services CI/CDアドベントカレンダー:App Centerとの連携(24日目)

はじめに

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

qiita.com

最近モバイル開発もよく聞くようになっていますというか、全盛時代ですね。私自身はあんまり…なのですが、一通りくらいはやっておかないとなぁということで、App Centerとの連携を試してみることにします。

サインアップ

f:id:kkamegawa:20171224223220p:plain

サインアップはGitHub/MSアカウント/Facebook/Googleもしくは独自アカウントで可能です。私はMSアカウントでやってます。

VSTSとの接続

VSTSとの接続にはAPI Keyを使います。App Center側で専用のAPI Keyを作り、VSTSのチームプロジェクトに登録します。

f:id:kkamegawa:20171224223210p:plain

API TokensからNew API tokenをクリック。

f:id:kkamegawa:20171224223211p:plain

わかりやすい名前と、アクセス権を設定します。VSTSからApp Centerに発行する必要があるので、Readではダメなので、Full Accessを選択します。

f:id:kkamegawa:20171224223212p:plain

API Keyとなるランダム文字列が生成されるのでコピーします。次はVSTS側の作業です。

f:id:kkamegawa:20171224223209p:plain

ServicesからNew Service Endpointをクリックして、Visual Studio App Centerをクリック。

f:id:kkamegawa:20171224223213p:plain

App Centerのtokenに先ほどコピーしたAPI Tokenをペーストして、OKを押します。

f:id:kkamegawa:20171224223214p:plain

ロゴの色が古いですが、気にせずこれでOKです。

App Centerのプロジェクト作成

App Centerはアプリ単位ではなく、バイナリー単位でプロジェクトを作成します。Visual Studioでソリューションを作った場合、複数のプラットフォーム向けのプロジェクトが一つになりますが、App Centerは別なので気を付けてください。

f:id:kkamegawa:20171224223216p:plain

iOS/Xamarinでプロジェクトを作ります。

f:id:kkamegawa:20171224223217p:plain

ビルドにVSTSにあるソリューションを使おうとする場合、Visual Studio Team Servicesを選んで接続すればいい…と思うのですが、ここから接続すると、なぜかAzure ADで認証するVSTSが自動的に選ばれてしまいました。まとめるとこうです。

  • Windows 10はAzure AD(Office 365)に接続(SSOではない)している
  • MSアカウントでも接続している
  • Azure ADで認証しているVSTSもある(去年のアドベントカレンダーで作ったから)
  • しかし、VSTSはMSアカウントのものを使いたい
  • 認証でなぜかAzure AD側のVSTSが自動的に選ばれた

うがー本来OAuthでMSアカウント側のVSTSに接続したかったのですが、頓挫しました。ちなみに、issue trackerからVSTSに接続する場合、ちゃんとMSアカウントのVSTSが選択できました。なんだそれ。

f:id:kkamegawa:20171224230531p:plain

こんな風にissue trackerにはMSアカウントのVSTSが選択できます。ちなみに、Azure ADのVSTS側から、App Centerの認証を取り消してしばらくまってください。

この現象はEdgeだと発生するので、Azure ADを使っている人がMSアカウントのVSTSに接続するときはChromeやFirefoxを使うことを推奨します。

VSTSでのビルド定義

VSTSのビルド定義にはApp Centerでテストする、App Centerに登録するといったタスクが用意されています。

f:id:kkamegawa:20171224223215p:plain

Xamarin.iOS/Xamarin.Androidのテンプレートがあるので、そこから作っていきます。このへんはXamarinになれた方のドキュメントを見たほうがいいと思います。

f:id:kkamegawa:20171224223219p:plain

App Centerへのデプロイですが、ちょっとややこしいですね。App CenterのURLに含まれる appcenter.ms/{username}/app/{appname} の{username}/{appname} 形式になります。

docs.microsoft.com

この辺はまだよくわからないです…

App Centerでビルド

認証キャッシュが切れたようなので、Chromeで再度接続してみたら、MSアカウント側のVSTSに接続できました。やってみたらさらに簡単ですね。

f:id:kkamegawa:20171224223221p:plain

Configurationがデフォルトdebugでした。VSTSではReleaseがデフォルトなのに意外と思ってしまいました。

VSTSのビルドタスクではリリースノートが必須項目だったのですが、App Centerにはないですね。apkのサインとかいろいろ楽になっています。

f:id:kkamegawa:20171224223222p:plain

手動でビルドしてみます。

f:id:kkamegawa:20171224223223p:plain

ログを見る限り、VSTSのLinux Hosted Agentが動いているようです。おそらくOSごとに違うエージェントが動いているのでしょう。

こんな感じであっさりビルドできてしまいました。XCodeなどは試せていませんが、おそらく同程度にできるのでしょう。

ビルド時間はVSTSと同様に240分無償のようですが、これ別計算なんですかね…VSTSと同じエージェント使っているんだから、VSTSの枠でやってくれたら料金も一緒になっていいんじゃないかなとは思います。