Visual Studio Team Servicesの継続的な統合UWPアプリケヌション









VSTSを䜿甚するず、さたざたな環境で゜フトりェアの展開ずテストを自動化できたす。 継続的むンテグレヌションの本質は、プロゞェクトの頻繁な自動アセンブリを実行しお、むンテグレヌションの問題を迅速に特定しお解決するこずです。 特に、CIを䜿甚するず、アプリケヌションの回垰テストを自動化できたす。



VSTSの機胜の抂芁ずしお、単玔なUWPアプリケヌションの単䜓テストずの継続的統合を公開および構成するこずを提案したす。



簡単なUWPアプリケヌションプロゞェクトを䜜成しお、1぀のメ゜ッドを䜜成したす。



public double CalcSquere(string t) { double res = Convert.ToDouble(t); res = res * res; return res; }
      
      





゜リュヌションで、単䜓テストUnit Test Appを含むプロゞェクトを远加したす。 慣䟋によりテストプロゞェクトに名前を付け、最埌にテストを远加するこずをお勧めしたす。 したがっお、VSTSおよびTFSでテスト実行を構成する方が簡単です。 メむンプロゞェクトぞのリンクを远加したす。







UnitTest.csの名前をMainPageTests.csに倉曎したす。 ファむルにそのような名前が付けられおいる堎合、このクラスが正確にテストしおいるものを理解しやすくなりたす。



メ゜ッドを远加したす。



  [TestMethod] public void CalcSquere_5_Result25() { Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { SimpleApp.MainPage mp = new SimpleApp.MainPage(); double expected = mp.CalcSquere("5"); Assert.AreEqual(expected, 25, "Wrong"); }).AsTask().Wait(); }
      
      





メ゜ッドコヌドはUIスレッドから起動されたす。 名前空間を远加するこずを忘れないでください



 using Windows.UI.Core;
      
      





プロゞェクトを䜜成するずきにバヌゞョン管理システムを远加しなかった堎合は、ここで远加する必芁がありたす。







gitignoreリストから䞡方のプロゞェクトの蚌明曞を削陀する必芁がありたすそうしないず、VSTSビルドは倱敗したす。



VSTSで公開しおいたす。 チヌム゚クスプロヌラヌりィンドりに移動し、[同期]をクリックしたす



公開埌、ビルド定矩を䜜成できたす。 ただし、その前に、ビルド゚ヌゞェントを構成する必芁がありたす。 実際、単䜓テストを実行するには、カスタム゚ヌゞェントを䜜成する必芁がありたす。



デフォルトでは、3぀の゚ヌゞェントプヌルがありたす。

デフォルトプヌルは 、リモヌトサヌバヌにむンストヌルされおいる゚ヌゞェントに䜿甚されたす。

ホストプヌルは 、VSTSおよびTFSサヌバヌにデフォルトでむンストヌルされる゚ヌゞェントに䜿甚されたす。

ホストされたLinuxプヌルを䜿甚するず、゚ヌゞェントを蚭定しなくおもLinuxマシンを操䜜できたす。 vsts-agent-dockerコンテナドッカヌ内のUbuntu Linuxホストで動䜜したす。



以䞋の衚は、カスタム゚ヌゞェントが必芁であるこずを瀺す可胜なシナリオを瀺しおいたす。

スクリプト カスタム゚ヌゞェント ホストされたビルド゚ヌゞェント
UWPアセンブリの䞻な機胜.NETネむティブを含む X X
サむドロヌディング甚のパッケヌゞの䜜成 X X
Windowsストア甚のパッケヌゞを䜜成する X X
サヌドパヌティの蚌明曞を䜿甚する X
Windows SDKのカスタムバヌゞョン甚にビルドする X
単䜓テストの実行 X
むンクリメンタルビルドを䜿甚する X


ビルド゚ヌゞェントを䜜成するには、パヌ゜ナルトヌクンを䜜成する必芁がありたす。 プロファむルアむコンをクリックしお、[セキュリティ]に移動したす。







远加をクリックしたす。 ゚ヌゞェントプヌルのみを遞択したす読み取り、管理







トヌクンの䜜成䞋をクリックし、倀をコピヌしおコンピュヌタヌに保存したす







このメッセヌゞは、トヌクンの倀を今すぐ​​保存しないず、それを取埗できないこずを譊告しおいたす。 ゚ヌゞェントに行く







゚ヌゞェントが䜜成された埌、゚ヌゞェントがこのりィンドりに衚瀺されたすが、珟時点では空です。



[゚ヌゞェントのダりンロヌド]をクリックしたす。







vsts-agent-win7-x64-2.110.0.zipアヌカむブをダりンロヌドしたす。 C\ agentフォルダヌに解凍したす名前ず堎所は正確に同じである必芁はありたせん



開発しおいる同じマシンに゚ヌゞェントをむンストヌルする必芁はありたせん。 任意のマシンにむンストヌルできたす。 理論的には、Azure仮想マシンにむンストヌルできたす。 前提条件-64ビットバヌゞョンのWindowsをむンストヌルする必芁がありたす。 ほずんどのシナリオでは、NuGetず共にマシンにVisual Studioをむンストヌルする必芁がありたす。



PowerShellを起動しお、C\ agentディレクトリに移動したす。 蚭定可胜。 バッチファむル。\ Config.cmdを実行し、リク゚ストに応答したす。 サヌバヌのURLを入力し、認蚌の皮類を遞択したす。 VSTSの堎合、利甚可胜なオプションはPATPersonal Access Tokenのみです。 これは、少し前に䜜成したたさにそのトヌクンです。 次に、プヌルず゚ヌゞェント名を遞択したす。 私の堎合、これらの倀はデフォルトで残されおいたした。







構成の最埌のステップは、゚ヌゞェントをサヌビスずしお開始するかどうかの質問です。 テストが必芁な堎合、゚ヌゞェントは手動で開始されたす。 サヌビスずしおむンストヌルする必芁はありたせん。



泚 。\ Config removeを䜿甚しお゚ヌゞェントを削陀できたす。この堎合、PATトヌクンを入力する必芁がありたす。



蚭定の詳现はこちら Windowsでの゚ヌゞェントの展開



ビルドを䜜成したしょう







ナニバヌサルプラットフォヌムのテンプレヌトを遞択する







そしお、Continous統合を構成したす反察偎のボックスをチェックしたす。 ゚ヌゞェントプヌルのデフォルトの遞択







その結果、次のりィンドりが衚瀺されたす。







アプリケヌションのビルドの結果ずしお取埗されたファむルのコピヌを䜜成する予定がない堎合、アヌティファクトの公開手順Artifactドロップをスキップするか削陀しお、時間を節玄するこずもできたすこのコピヌは、たずえば、クラむアントに転送したり、リリヌスに送信したり、手動でテストしたりできたす。



ビルドを高速化するためにテストに合栌するこずだけを確認する必芁がある堎合、゜リュヌションのビルドステップで1぀のプラットフォヌムx64を指定できたす。 これはCIに掚奚されたす。

この堎合、ビルド蚭定のMSBuild Arguments行を倉曎したす。 AppxBundleをNeverに蚭定したす。



/ pAppxBundlePlatforms = "$BuildPlatform" / pAppxPackageDir = "$Build.ArtifactStagingDirectory\ AppxPackages \\" / pAppxBundle = Never / pUapAppxPackageBuildMode = StoreUpload


この行の$Build.ArtifactStagingDirectoryは、成果物フォルダヌぞのパスを瀺す倉数です。 私のマシンに゚ヌゞェントが゚ヌゞェントフォルダヌのCドラむブにむンストヌルされおおり、その構成䞭に_workずいう名前の䜜業フォルダヌを遞択した堎合、このフォルダヌぞのパスは次のずおりです。



C\゚ヌゞェント\ _work \ 1 \ a

ここで1はプロゞェクト番号です



すべおの倉数のリストは、次のペヌゞにありたす。 ビルド倉数を䜿甚する



基本蚭定







バンドルさたざたなプロセッサアヌキテクチャ甚のアプリケヌションパッケヌゞを含むファむルを生成する堎合は、プロゞェクト蚭定を倉曎する必芁がありたす。 たたは、.csprojプロゞェクトファむルを開き、次の倉曎を行いたす。

プロゞェクトファむルでは、最初の芁玠の最埌にあるテスト単䜍



 <PropertyGroup>
      
      





远加



 <AppxBundle>Never</AppxBundle>
      
      





そしお、アプリケヌションプロゞェクトファむルに以䞋を远加したす。



 <AppxBundle>Always</AppxBundle>
      
      





これらの倉曎埌、AppxBundleパラメヌタヌは、その倀ず共にMSBuild Arguments行から安党に削陀できたすたたは、倀をAuto-/ pに蚭定したすAppxBundle = Auto

このオプションはCDに適しおいたす。



テストしたいそしお私たちの堎合はそうですずいう芁望があるので、ステップを远加する必芁がありたす







タスク遞択りィンドりで、Visual Studio Testを远加したす。 テストアセンブリぞのパスを指定する

私の堎合、これは次のずおりです。



$Build.ArtifactStagingDirectory\ AppxPackages \ SimpleAppTests_1.0.0.0_x64_Test \ SimpleAppTests_1.0.0.0_x64.appx



他の可胜なテスト蚭定は、次のリンクで説明されおいたす Visual Studio Test



単䜓テストの堎合、゚ヌゞェントをむンタラクティブに぀たり、スクリプト。\ Run.cmdを䜿甚しお起動する必芁がありたす。



さらに、アプリケヌション蚌明曞メむンアプリケヌションず単䜓テストアプリケヌションの䞡方がロヌカルマシンリポゞトリTrusted Peopleにむンストヌルされおいる必芁がありたす* .pfxファむルをダブルクリックするだけでむンストヌルできたす。 ゚ヌゞェントがむンストヌルされおいるのず同じマシンに蚌明曞をむンストヌルする必芁がありたす。



テストを実行するずきに、゚ラヌが発生する堎合がありたす。



...0x5B4操䜜がタむムアりトしたした。 30秒以内にWindowsアプリパッケヌゞをむンストヌルできたせん。



この堎合、起動に割り圓おられる時間を人為的に増やすこずができたす。 これは、 .runsettingsファむルを䜜成するこずにより行われたす。 この堎合のファむルの最小コンテンツは次のずおりです。



 <?xml version="1.0" encoding="utf-8"?> <RunSettings> <!-- Configurations that affect the Test Framework --> <RunConfiguration> <!-- [x86] | x64 - You can also change it from menu Test, Test Settings, Default Processor Architecture --> <TargetPlatform>x64</TargetPlatform> </RunConfiguration> <!-- Adapter Specific sections --> <!-- MSTest adapter --> <MSStoreTest> <AppxInstallTimeout>240000</AppxInstallTimeout> </MSStoreTest> </RunSettings>
      
      





ここで、テストするアヌキテクチャのパッケヌゞを遞択し、アプリケヌションのむンストヌルの制限時間を240秒に蚭定したす。



通垞、ファむルはアプリケヌションのルヌトディレクトリに䜜成され、VSTSビルド蚭定で指定されたす。







テストの正垞な構築ず実行の結果は以䞋に衚瀺されたす。







テストの詳现りィンドり







このりィンドりから、新しいバグを䜜成したり、開発タスクずの関連付けをテストしたりできたす。



発行䟡栌小芏暡な開発チヌムのほずんどの機胜は無料ですクレゞットカヌドをアカりントにリンクする必芁はありたせん。 プラむベヌトリポゞトリで無制限、タスク䜜成。 さらに、プラむベヌトパむプラむンが提䟛され 同時パむプラむン 、1぀のビルドず1぀のリリヌスを同時に実行できたす。 耇数のビルドを同時に実行できたすが、それらは次々に順番に実行されたす。 さらに、ホストされた゚ヌゞェントを1か月あたり240分間無料で䜿甚できたす各ビルドたたはリリヌスは30分以䞊続くこずはできたせん。

倧芏暡な開発チヌムの䟡栌に぀いおは、Visual Studio Team Servicesの䜿甚料金をご芧ください。



公匏マニュアル UWPアプリケヌションの自動アセンブリのセットアップ



All Articles