Visual Studio Team Services を使用した Azure への継続的な配信

Visual Studio Team Services チーム プロジェクトを自動的にビルドして Azure Web アプリまたはクラウド サービスにデプロイするように構成できます。 オンプレミスの Team Foundation Server を使用した継続的なビルドおよびデプロイ システムのセットアップ方法については、「 Continuous Delivery for Cloud Applications in Azure (Azure での Cloud Services の継続的な配信)」を参照してください。

このチュートリアルは、Visual Studio 2013 と Azure SDK がインストール済みであることを前提としています。 Visual Studio 2013 がない場合は、 www.visualstudio.com無料利用の開始リンクをクリックしてダウンロードします。 Azure SDK を ここからインストールしてください。

メモ

このチュートリアルを完了するには、Visual Studio Team Services アカウントが必要です。Visual Studio Team Services アカウントは無料で作成することができます。

Visual Studio Team Services を使用してクラウド サービスを自動的にビルドして Azure にデプロイするようにセットアップするには、次の手順に従います。

1: チーム プロジェクトを作成する

この 手順に従って、チーム プロジェクトを作成し、Visual Studio にリンクさせます。 このチュートリアルでは、ソース管理ソリューションとして Team Foundation バージョン管理 (TFVC) を使用していることを前提としています。 バージョン管理に Git を使用する場合は、「 このチュートリアルの Git バージョン」を参照してください。

2: プロジェクトをソース管理にチェックインする

  1. Visual Studio で、デプロイするソリューションを開くか、新しいソリューションを作成します。 このチュートリアルの手順に従って、Web アプリまたはクラウド サービス (Azure アプリケーション) をデプロイできます。 新しいソリューションを作成する場合は、新しい Azure クラウド サービス プロジェクト、または新しい ASP.NET MVC プロジェクトを作成します。 プロジェクトが .NET Framework 4 または 4.5 をターゲットにしていることを確認し、クラウド サービス プロジェクトを作成している場合は、ASP.NET MVC の Web ロールおよび worker ロールのプロジェクトを追加して、Web ロールに対応するインターネット アプリケーションを選択します。 確認メッセージが表示されたら、 [インターネット アプリケーション]を選択します。 Web アプリを作成する場合は、ASP.NET Web アプリケーション プロジェクトのテンプレートを選択し、次に MVC を選択します。 「 Azure アプリ サービスでの ASP.NET Web アプリの作成」を参照してください。

    メモ

    Visual Studio Team Services では、現在、Visual Studio Web アプリケーションの CI デプロイメントのみをサポートしています。 Web サイト プロジェクトはサポート対象外です。

  2. ソリューションのコンテキスト メニューを開き、 [ソリューションをソース管理に追加]を選択します。

  3. 既定値を受け入れるか変更し、 [OK] を選択します。 処理が完了すると、ソース管理アイコンが ソリューション エクスプローラーに表示されます。

  4. ソリューションのショートカット メニューを開き、 [チェックイン]を選択します。

  5. チーム エクスプローラー[保留中の変更] にチェックインのコメントを入力し、[チェックイン] を選択します。

    チェックインをするときは、特定の変更を含むまたは除外するためのオプションに注意してください。 必要な変更が除外されている場合は、 [すべて含む] を選択します。

3: プロジェクトを Azure に接続する

  1. ソース コードが含まれる VS Team Services チーム プロジェクトが完成したので、チーム プロジェクトを Azure に接続することができます。 Azure クラシック ポータルで、クラウド サービスまたは Web アプリを選択するか、新たに作成します。作成するには、左下にある [+] アイコンを選択し、[クラウド サービス] または [Web アプリ] を選択して、[簡易作成] を選択します。 [Set up publishing with Visual Studio Team Services (Visual Studio Team Services を使用した発行の設定)] を選択します。

  2. ウィザードで、テキスト ボックスに Visual Studio Team Services アカウントの名前を入力し、 [今すぐ承認] をクリックします。 サインインを求められることがあります。

  3. [接続要求] ポップアップ ダイアログで [承諾] を選択して、Azure が VS Team Services のチーム プロジェクトを構成することを許可します。

  4. 承認が成功すると、VSTS チーム プロジェクトのリストが含まれるドロップダウンが表示されます。 前の手順で作成したチーム プロジェクトの名前を選択し、ウィザードのチェックマーク ボタンを選択します。

  5. プロジェクトがリンクされると、変更を VSTS チーム プロジェクトにチェックインするための手順が表示されます。 次のチェックイン時に、VSTS はプロジェクトをビルドして Azure にデプロイします。 これを試すには、[Visual Studio 2012 からチェックインする] をクリックし、[Visual Studio 2012 を起動] をクリックします (またはこれと同等の、ポータル画面下部にある [Visual Studio] をクリックします)。

4: リビルドをトリガーし、プロジェクトを再デプロイする

  1. Visual Studio のチーム エクスプローラーで、[ソース管理エクスプローラー] を選択します。

  2. ソリューション ファイルの保存場所に移動し、ファイルを開きます。

  3. ソリューション エクスプローラーで、ファイルを開いて変更します。 たとえば、MVC Web ロールの Views\Shared フォルダーにある _Layout.cshtml ファイルを変更します。

  4. サイトのロゴを編集し、 Ctrl + S キーを押してファイルを保存します。

  5. チーム エクスプローラーで、[保留中の変更] を選択します。

  6. コメントを入力し、 [チェックイン] を選択します。

  7. [ホーム] を選択して、チーム エクスプローラーのホーム ページに戻ります。

  8. [ビルド] を選択して、処理中のビルドを表示します。

    チーム エクスプローラー に、チェックインのためにビルドが開始されたことが示されます。

  9. 処理中のビルドの名前をダブルクリックして、ビルドの進行に合わせて詳細ログを表示します。

  10. ビルドの処理中、ウィザードを使用して TFS を Azure にリンクしたときに作成されたビルド定義を調べてください。 ビルド定義のショートカット メニューを開き、 [ビルド定義の編集]を選択します。

    [トリガー] タブを見ると、既定ではチェックインごとにビルドを行うようにビルド定義が設定されていることがわかります。

    [プロセス] タブを見ると、デプロイメント環境がクラウド サービスまたは Web アプリの名前に設定されていることがわかります。 Web アプリを操作している場合は、ここで示されているものとは異なるプロパティが表示されます。

  11. 既定値と異なる値を使用する場合は、プロパティに対して希望の値を指定します。 Azure 発行のプロパティは [デプロイメント] セクションにあります。

    次の表は、 [デプロイメント] セクションで使用可能なプロパティを示しています。

    プロパティ 既定値
    信頼されていない証明書を許可 false の場合、SSL 証明書はルート証明機関によって署名される必要があります。
    アップグレードの許可 新規作成の代わりに、既存のデプロイメントを更新するデプロイメントを許可します。 IP アドレスを保持します。
    削除しない true の場合、既存の関連のないデプロイメントを上書きしません (アップグレードは許可)。
    デプロイメント設定へのパス リポジトリのルート フォルダーを基準とした Web アプリの .pubxml ファイルへのパス。 クラウド サービスでは無視されます。
    Sharepoint デプロイメント環境 サービス名と同じ。
    Azure デプロイメント環境 Web アプリ名またはクラウド サービス名。
  12. 複数のサービス構成 (.cscfg ファイル) を使用している場合は、 [Build、Advanced、MSBuild 引数] 設定で目的のサービス構成を指定できます。 たとえば、ServiceConfiguration.Test.cscfg を使用するには、MSBuild 引数ライン オプション /p:TargetProfile=Testを設定します。

    このころまでには、ビルドが正常に完了しています。

  13. ビルド名をダブルクリックすると、関連付けられた単体テスト プロジェクトのテスト結果を含む [ビルドの概要]が表示されます。

  14. Azure クラシック ポータルでは、ステージング環境が選択されると、関連付けられたデプロイが [デプロイ] タブに表示されます。

  15. 目的のサイトの URL に移動します。 Web アプリの場合は、コマンド バーの [参照] ボタンをクリックします。 クラウド サービスの場合は、クラウド サービスのステージング環境を示す [ダッシュボード] ページの [概要] セクションで URL を選択します。 クラウド サービス向けの継続的な統合からのデプロイメントは、既定ではステージング環境に発行されます。 [代替クラウド サービス環境] プロパティを [運用] に設定することで、これを変更できます。 このスクリーンショットでは、クラウド サービスのダッシュボード ページでサイト URL が表示される場所を示しています。

    新しいブラウザー タブが開いて、実行中のサイトが表示されます。

    クラウド サービスの場合は、プロジェクトにその他の変更を加えると、さらにビルドが実行され、複数のデプロイメントが累積されます。 最新のデプロイは [アクティブ] とマークされます。

5: 以前のビルドを再デプロイする

この手順の内容は、クラウド サービスのみに適用され、省略可能です。 Azure クラシック ポータルで以前のデプロイメントを選択し、 [再デプロイ] をクリックしてサイトを以前のチェックインに戻します。 これによって、TFS で新しいビルドが開始され、デプロイメント履歴に新しいエントリが作成されます。

6: 運用デプロイを変更する

この手順の内容は、クラウド サービスのみに適用され、Web アプリには適用されません。 準備が整ったら、Azure クラシック ポータルで [スワップ] を選択してステージング環境を運用環境へ昇格できます。 新たにデプロイされたステージング環境は運用に昇格され、以前の運用環境がある場合、運用環境はステージング環境になります。 運用環境とステージング環境でアクティブなデプロイメントは異なることはありますが、最近のビルドのデプロイメント履歴は環境にかかわらず同じです。

7: 単体テストを実行する

この手順の内容は、Web アプリのみに適用され、クラウド サービスには適用されません。 デプロイメントにクオリティ ゲートを配置するには、単体テストを実行できます。失敗した場合は、デプロイメントを停止できます。

  1. Visual Studio で、単体テスト プロジェクトを追加します。

  2. テストするプロジェクトにプロジェクト参照を追加します。

  3. 複数の単体テストを追加します。 開始するには、常に合格するダミーのテストを試してみてください。

    ```
    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace UnitTestProject1
    {
        [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            [ExpectedException(typeof(NotImplementedException))]
            public void TestMethod1()
            {
                throw new NotImplementedException();
            }
        }
    }
    ```
    
  4. ビルド定義を編集し、[プロセス] タブを選択して、[テスト] ノードを展開します。
  5. [テスト失敗時にビルドを失敗させる] を True に設定します。 これは、テストに合格しない限り、デプロイメントが行われないことを意味します。

  6. 新しいビルドがキューに追加されます。

  7. ビルドの進行中は、進行状況を確認します。

  8. ビルドが完了したら、テスト結果を確認します。

  9. 失敗するテストを作成してみます。 最初のテストをコピーして新しいテストを追加し、その名前を変更して、NotImplementedException が予期される例外であるコード行をコメントアウトします。

    ```
    [TestMethod]
    //[ExpectedException(typeof(NotImplementedException))]
    public void TestMethod2()
    {
        throw new NotImplementedException();
    }
    ```
    
  10. 変更をチェックインし、新しいビルドをキューに追加します。

  11. テスト結果を表示して失敗の詳細を確認します。

次のステップ

VSTS での単位テストの詳細については、 「ビルド プロセスでのテストの実行」を参照してください。 Git を使用している場合は、Git でのコードの共有に関するページおよび「Azure App Service への継続的なデプロイ」を参照してください。 Visual Studio Team Services の詳細については、 Visual Studio Team Servicesに関するページをご覧ください。