1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Visual Studio Team ServicesでASP.NET Coreプロジェクトのビルドを設定する

概要

  • Visual Studio Team Services(以下VSTS)を使用し、ASP.NET Coreプロジェクトをビルドする手順を紹介します。
  • ASP.NET CoreプロジェクトはXamarin.Formsのテンプレートのオプションで追加できるASP.NET Core Web APIを使用します。

本題

準備

Vidsual Studio2017でビルド対象プロジェクト作成

対象はなんでもいいのですが、ここでは

  • 個人的に多少なじみがある
  • 準備(再現)が簡単
  • ソリューションに複数プロジェクトある状態にしたい

ということでXamarin.Formsのテンプレートのオプションで追加できるASP.NET Core Web APIを選択しています。

一応手順も載せます。面倒な方は僕が準備したソースコードを使っていただいても結構です。
toshi0607/SampleAppWithBackend

  1. Visual Studio2017を開きます。
  2. ファイル > 新しいソリューションをクリックします。
  3. Multiplatform > アプリ > Forms Appを選択し、「次へ」をクリックします。 スクリーンショット 2017-07-23 10.56.19.png
  4. App Nameを入力し、Mobile Backendにチェックを入れて「次へ」をクリックします。 スクリーンショット 2017-07-21 22.29.38.png
  5. プロジェクト名、場所を入力して「作成」をクリックします。 スクリーンショット 2017-07-23 10.57.38.png

プロジェクトは上記手順で作成されたSampleAppWithBackend.MobileAppServiceを使用します。

VSTSでソースコード管理ツールとの連携

今度はVSTS側の設定です。

ビルド対象のソースコードの管理ツール(今回はGithub)とVSTSを連携するための設定手順です。

  1. VSTSのProject追加ページで「New Project」をクリックします。
    スクリーンショット 2017-07-23 13.08.49.png

  2. Project Nameを入力して「Create」をクリックします。便宜上「SampleAppWithBackend2」としていますが、紐付けるソースコードのプロジェクトととの一致は必須ではないです。
    スクリーンショット 2017-07-23 13.08.12.png

  3. ソースコード管理を連携するため、or import a repositoryを開き、「import」をクリックします。ソースコードの管理方法に応じてよしなに…
    スクリーンショット 2017-07-23 13.17.15.png

  4. ソースコードをGihutbで管理している場合はClone URLを入力し、「Import」をクリックします。
    スクリーンショット 2017-07-23 13.19.21.png

Clone URLはGithubで確認してください。
スクリーンショット 2017-07-23 13.19.59.png

ソースコード管理ツールとの連携は以上です。

ビルドフローの定義

今度はビルドフローを定義します。VSTSのビルドテンプレートやビルドに必要なパーツ群を組み合わせます。

作業が完了すると、Githubからソースコードを取得し、ビルドできるようになります。

  1. ビルド定義を設定したいプロジェクトを開き、「+ New Definition」をクリックします。
    スクリーンショット 2017-07-23 13.26.23.png

  2. 「ASP.NET Core」テンプレートを選択し、「Apply」をクリックします。
    スクリーンショット 2017-07-23 13.27.53.png

  3. 「Default agent queue」を「Hosted VS2017」に設定し、「Project(s) to restore and build」に「MobileAppService/*.csproj」を入力します。
    スクリーンショット 2017-07-23 13.37.30.png

これだけで設定完了!だと楽なのですが、問題があるようでテンプレートのプロセスをカスタマイズしていきます。

今回作成したソリューションにはプロジェクトが複数含まれているため下記の事象に該当します。

vsts note.png
Build your ASP.NET Core appより

テンプレートでパス指定できるのRestore、Build(と今回は含めてませんがTest)までということですね…

4. 「+ Add Task」をクリックして「Command Line」を「Add」し、ProcessのBuild直下にドラッグします。
「Tool」に「dotnet」と入力し、「Arguments」に「publish -c $(BuildConfiguration) -o $(Build.ArtifactStagingDirectory)」と入力してください。「Display name」は「Run dotnet」としましょう。Advanced内の「Working folder」は「MobileAppService」を。
スクリーンショット 2017-07-23 13.49.07.png

5. 「+ Add Task」をクリックして「Archive Files」を「Add」し、ProcessのRun dotnet直下にドラッグします。
「Root folder (or file) to archive」を「$(Build.ArtifactStagingDirectory)」に変更してください。

スクリーンショット 2017-07-23 13.53.47.png

6. 「+ Add Task」をクリックして「Copy Files」を「Add」し、ProcessのArchive Files直下にドラッグします。「Source Folder」に「$(Build.SourcesDirectory)」を、「Contents」に「**\bin\$(BuildConfiguration)\**」を、「Target Folder」に「$(Build.ArtifactStagingDirectory)」を設定します。
スクリーンショット 2017-07-23 14.06.27.png

7. 今回はTestもPublishも使用しないので、Process上で右クリックし、無効化か削除します。
スクリーンショット 2017-07-23 14.08.05.png

以上で完了です。Save & queueをクリックし、queueをクリックしてビルドしてみてください!

以下はオマケなのではっしょってます。ご参考程度に…

リリース設定

ビルドしたものをApp Serviceにリリースしたいですよね?AzureのPortal側からも設定できますが、VSTS上でビルドフローの延長でデプロイフローも設定できます。

ビルド結果のページで「Release」をクリックします。
スクリーンショット 2017-07-23 14.19.12.png

すると、デプロイテンプレートを選択できます。Testやパフォーマンステスト付きでデプロイするオプションもあります。

Azure App Service系のテンプレートを選択し、Azureのサブスクリプションを紐づけると登録済みのApp Serviceが選択できるようになります。

appservice.png

App Serviceと連携すると、ビルドページからはビルドしたてのものを選択してリリースできるようになります。
スクリーンショット 2017-07-23 14.30.49.png

また、ビルドとリリースは分ける前提で書いていますが、先ほどのビルドプロセスに組み込むことも可能です。

「ビルドが成功したらリリース!!!」という設定も可能です。

ProcessにAzure 「App Service Deploy」を追加し、「Control Options」で「Only when all previous tasks have succeeded」を設定します。

deploy.png

「Control Options」ではこのようにProcessの実行が色々選べます。
スクリーンショット 2017-07-23 17.17.25.png

ビルドトリガー設定

ソースコード管理ツール(Github)上で何か変更があったときにビルドを自動で走らせる設定ができます。

プロジェクトのTriggersタブで有効・無効を変更できます。

下のスクショではmasterブランチに変更があったときにビルドが行われるように設定しています。

スクリーンショット 2017-07-23 14.35.53.png

Slackからビルドを開始する

いわゆるChatOpsです。第7回 Tokyo Jazug Nightというイベントでお話します。

chatops.png
Microsoft Flowを使ってSlackからVisual Studio Team Servicesのビルドを実行する

ビルド結果のSlack通知

ビルドした結果をSlackに通知できます。上のスクショみたいなイメージです。

こちら(誰でもできる!VSTSとSlackの超簡単な連携方法)の記事がわかりやすいです。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?