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の枠でやってくれたら料金も一緒になっていいんじゃないかなとは思います。

Hosted VS2017エージェントを使ってXamarinプロジェクトを継続的インテグレーションする

追加でこういう質問を受けたので、調べてみました。結論から言えばできます。もちろん、C# 7の機能を使っていても、対応するNuGetパッケージを入れていれば大丈夫です(一緒に生成されるライブラリプロジェクトに追加して確認)。

f:id:kkamegawa:20170411212250p:plain

一つだけ注意点として、NuGet Restoreタスクで使用するNuGetを明示的に3.5以上にしてください。ここでは4.0を指定していますが、Hosted VS2017であれば入っているので、大丈夫です。

f:id:kkamegawa:20170411212245p:plain

テンプレートから作っただけのXamarin.Formsアプリですが、こんな風にビルドできます。どうも"Visual Studio 2017"のHosted Agentなので、元からXamarinをはじめ、VS 2017に入っている機能は全部入っているようです。

f:id:kkamegawa:20170411214322p:plain

もう一つ、直接の問題ではありませんが、どうもHosted VS2017 AgentにはGit LFSが入っていないようです。フィードバックしていますので、そのうち治ると思います。

(2017/4/22更新)
4/19にVSTSの更新が入ったので、確認してみたところ、Hosted VS2017にGit LFS入ったようです。正しくビルドできました。

f:id:kkamegawa:20170422003445p:plain

Visual Studio Team Services 2016/4/13の更新

予想通り、Visual Studio Team Systemが4/13で更新されました。オリジナルのリリースノートはこちらでこれはその参考訳です。

2016-April 13 Release Notes | Visual Studio Team Services

今回のリリースの中心はほとんどWorkハブですね。そのほかは見た目には地味だけど、仲は大変な改造だったんだろうなと思われるURLにあった/DefaultCollectionの削除とか、作業項目の移動とか。

作業項目のPick Listsは訳しててもよくわからなかったので、これは実際にやってみるしかないでしょう。おそらくプロセステンプレートでよくわからない項目を簡単にUIだけでできる(それで大部分の用途が満たせる)類の機能ではないかと思います。

ビルドのエラーからコードにジャンプするの確かにわかりづらくて困っていたんですよね。あと、Xamarin買収に伴い、より高度に連携するようになっています。パスワード生で書くのきつかったので改良されているといいな。

Javaのテンプレートも改良されていますね。ではまた三週間後。

translate to Japanese toVSTS release notes from ht ...

Build 2016二日目キーノートからVS関係

Xamarin

id:ytabuchiさんのお仕事がw。買収された時から半ば予想されていたことですが、やはりというか、Visual Studioユーザーには無償提供されることになりました。しかもびっくりすることに、Community Edition含むそうです。つまりスタートアップの方には無償でXamarinが使えます。

iOSエミュレータや、コードを編集するとリアルタイムにエミュレータにも反映されるXamarinインスペクタもすばらしいです。

Xamarinのランタイムもオープンソースになるそうです。もともとオープンソース企業でしたし、pull requestとかも普通に受け付けてくれるんでしょう。

Xamarin Text Cloudという実機でテストする機能があるのですが、テストコードを自動で作ってくれるのは素晴らしいですね。

モバイルの開発にライセンスが…とか言っていた向きにも十分検討できますね!Slackでも使っているとか知りませんでした。

無償化の範囲はおそらく今でいうところのBusinessエディションになるのでしょう。

素晴らしいiOSシミュレータも付くそうですが、Appleのライセンスが変わらない限り、Mac不要にはならないでしょうね。MS的にはVSTS+ビルドエージェントでリモートビルドしてね♪ということなんでしょう。

blog.xamarin.com

VSTSとモバイルテスト

買収したHockeyAppとの統合、Xamarin test cloudとの統合。昨年のconnect();でも発表されていました。

  • Xamarinで作ってテストして
  • VSTSでビルド&管理して
  • HockeyAppで先行ユーザにデプロイ&フィードバック&クラッシュダンプ採取

という流れなんでしょう。Xamarin InsightsはHockeyAppとかぶっているので、HockeyAppに移行ということのようです。