ビルド、配置、およびテストのワークフローの配置スクリプトの作成
発行: 2016年7月
ビルド、配置、テストのワークフローを使用してアプリケーションを配置するには、配置スクリプトを作成して、ビルドに追加する必要があります。 配置スクリプトは、ラボ環境内のコンピューターにビルドをコピーする BAT ファイルまたは CMD ファイルです。 ビルドにインストール パッケージが含まれている場合は、配置スクリプトを使用してインストール パッケージを実行できます。 ビルド、配置、テストのワークフローを作成するときには、配置スクリプトを実行するためのコマンドをワークフローに追加します。 ワークフローを実行するときには、ビルド コントローラーによって、ラボ環境にある指定したコンピューターの作業ディレクトリでこれらのコマンドが実行されます。
「SCVMM 環境のビルド、配置、およびテストのワークフローを作成する」または「標準環境のビルド、配置、およびテストのワークフローを作成する」を参照してください。 これらのセクションでは、ビルド、配置、テストのワークフローを使用して、配置スクリプトを作成および使用する方法について説明します。
配置のためのビルド ファイルの準備
配置スクリプトの記述
配置スクリプトのビルド
作業ディレクトリの設定
ワークフローへの配置スクリプトの追加
他の例については、「システム テストの自動化」を参照してください。
必要条件
- Visual Studio Enterprise, Visual Studio Test Professional
配置のためのビルド ファイルの準備
アプリケーションのインストールのために選択する方法によって、配置スクリプトで実行する必要がある主要なタスクが決まります。 アプリケーションのインストールには、クライアント コンピューターに EXE をコピーするだけの場合もあり、複数のコンピューターにファイルをインストールする配置パッケージを実行する場合もあります。 次の表では、配置の各タイプのタスクについて説明します。
重要
アプリケーションが必須ソフトウェアに依存し、そのソフトウェアがアプリケーションが配置される前に配置スクリプトでインストールおよび構成されない場合は、ラボ環境内のマシンを準備するときに手動でインストールする必要があります。環境のスナップショットを配置する SCVMM 環境を使用している場合は、スナップショットにインストールされるソフトウェアがあることを確認する必要があります。
インストールの種類 |
説明 |
||
---|---|---|---|
Web サービス配置パッケージ |
配置スクリプトでは、ラボ環境のターゲット コンピューターにビルド ファイルおよび配置パッケージ ファイルをコピーして、その配置パッケージを実行する必要があります。 これを行うために、パラメーターとして配置スクリプトにドメイン名、サービス アカウント名、および TFS サーバー名を渡す必要がある場合があります。 この種類のインストールでは、通常はアプリケーションを配置する前に Web サーバーやデータベース サーバーなどの必要なソフトウェアを手動でインストールして構成する必要があります。 必要なソフトウェアの構成には、ターゲット コンピューターにアプリケーションを配置するための特別なタスクが必要になる場合があります。 たとえば、アプリケーションで IIS を使用する場合は、アプリケーションを配置する前に、ラボ環境の IIS サーバーに Web Deployment Agent サービスが構成されている必要があります。 |
||
インストール パッケージを使用しないビルド ファイル |
配置スクリプトでは、アプリケーションやビルド ファイルをラボ環境内のコンピューターにコピーする必要があります。 |
||
インストール パッケージ |
配置スクリプトでは、ラボ環境のターゲット コンピューターにインストール パッケージをコピーして、そのインストール パッケージを実行する必要があります。 配置スクリプトによってインストール パッケージが実行される場合は、サイレント インストールになることに注意する必要があります。 インストールで必要となるユーザー入力は、配置スクリプトで処理する必要があります。 これには資格情報も含まれます。 インストール パッケージを実行するときに発生するすべてのユーザー入力を配置スクリプトで処理できないと、アプリケーションの配置は失敗します。 Web アプリケーションを配置せず、配置のためにインストール パッケージを必要とする場合は、InstallShield インストール パッケージを使用することをお勧めします。 InstallShield の詳細については、「Windows インストーラーの配置」を参照してください。 |
配置スクリプトの記述
以下は配置スクリプトで実行される最も一般的なタスクです。
ビルド コントローラーのビルドのパスの取得。 このパスは配置スクリプトにコマンド引数として渡すことができます。
配置パスの指定。
配置ディレクトリの作成。 これは配置スクリプトではなく、手動で行うこともできます。 ワークフローで配置前の環境のスナップショットを使用する場合は、スナップショットで仮想マシンのディレクトリを作成することのみ必要です。
ビルドのパスから配置パスへの配置パッケージのコピー。
配置ディレクトリでの配置パッケージの実行。
次のコマンドは、配置スクリプトで実行される一般的なタスクを示しています。
REM set build path
set buildlocation=%1
REM set deployment path
set targetdir="C:\deploy"
REM create deployment directory
if not exist %targetdir% (cmd /c mkdir %targetdir%)
REM copy build to the deployment directory
xcopy /c /y /e %buildlocation%\*.* %targetdir%
REM if you are using a deployment package you can run it here, after you copy it to your deployment directory
配置スクリプトのビルド
配置スクリプトを作成したら、それをバージョン管理にチェックインして、ビルドの出力先にコピーされるように構成します。 配置スクリプトを作成するには、それらがソリューションだけでなく Visual Studio プロジェクトに格納されていることを最初に確認します。 これを Visual Studio で行うには、[ソリューション エクスプローラー] で配置スクリプトを選択し、次に [プロパティ] で [出力ディレクトリにコピー] を [常にコピーする] に変更します。
作業ディレクトリの設定
ビルド、配置、テストのワークフローに追加するコマンドの各セットに対して作業ディレクトリを指定できます。 作業ディレクトリを指定すると、そのロールに割り当てられた各コンピューターの作業ディレクトリで、指定されたコマンドがビルド コントローラーによって実行されます。 ビルド、配置、テストのワークフローにコマンドを追加するときに作業ディレクトリを指定しないと、ビルド コントローラーでは既定の作業ディレクトリである C:\Windows\System32 でコマンドを実行します。
重要
ビルド、配置、テストのワークフローに追加するコマンドを使用して作業ディレクトリを作成しないでください。これを行うと、配置スクリプトでこれらのディレクトリにファイルをコピーする前にディレクトリを作成することができなくなります。
作業ディレクトリを指定するときには、配置スクリプトでこのディレクトリにファイルをコピーする前に、このディレクトリが作成済みであるようにする必要があります。 ビルド、配置、テストのワークフローに配置スクリプトを追加するために使用するコマンドで作業ディレクトリは作成しないでください。 これを行うと、配置スクリプトでディレクトリにファイルをコピーする前にディレクトリが作成されていないことになります。 配置スクリプトでファイルを作業ディレクトリにコピーするより前に作業ディレクトリが作成されるようにするには、ラボ環境のターゲット コンピューターにそのディレクトリを手動で作成しておくか、配置スクリプトにおいてコマンドでファイルをコピーする前に作業ディレクトリが作成されるようにする必要があります。
ワークフローへの配置スクリプトの追加
ビルド、配置、テストのワークフローに Windows のシェル コマンドを追加して、ラボ環境にアプリケーションを配置します。 配置スクリプトを使用するときには、コマンドでビルド コントローラーからターゲット コンピューターの作業ディレクトリに配置スクリプトをコピーし、それから配置スクリプトを実行する必要があります。 ただし、作業ディレクトリにいくつかのファイルをコピーするだけの単純なアプリケーションのインストールでは、外部の配置スクリプトを指定せず、ワークフロー内でシェル コマンドを使用することができます。
Windows プロンプトから実行されるコマンド (mkdir やバッチ ファイルの実行など) を追加する場合は、cmd /c を使用してコマンドを開始する必要があります。 たとえば、cmd /c $(BuildLocation)\copyexe $(BuildLocation) というコマンドの場合、copyexe は、実行可能ファイルを仮想マシン上のローカル ディレクトリにコピーするバッチ ファイル copyexe.bat です。
組み込みの変数: ビルド、配置、テストのワークフローにこれらのコマンドを追加するときには、組み込みの変数を使用して特定のパスとコンピューターを指定することができます。 また、これらの変数を配置スクリプトに渡すこともできます。
$(BuildLocation)
ビルド ファイルが置かれている完全パス、またビルド、配置、およびテスト ワークフローで構成する場合はビルドの格納場所。 ビルド ファイルにアクセスするには、この変数を使用します。$(InternalComputerName_<VM 名>)
SCVMM 環境での仮想マシンのコンピューター名。 ホストのコンピューター名がわからない場合に仮想マシンのホストにアクセスするには、この変数を使用します。 配置スクリプトで Web サーバーを設定するためにコンピューター名が必要な場合、コンピューター名を引数としてスクリプトに渡すことができます。 たとえば、Web サーバーの仮想マシン名が VM1 でコンピューター名が MyWebServer の場合、スクリプトの引数として「$(InternalComputerName_VM1)」と入力すると、スクリプトに MyWebServer という値が渡されます。$(ComputerName_<VM 名>)
注意
SCVMM 環境でのネットワークの分離: SCVMM 環境でネットワークの分離を使用している場合は、$(InternalComputerName_<VM Name>) の値はこの環境のどのコピーの仮想マシンのインスタンスでも同じですが、$(ComputerName_<VM Name>) の値はそれぞれで異なります。
仮想マシンの完全修飾ドメイン名。 SCVMM 環境の外にあるコンピューターからアクセスするにはこの変数を使用します。 この変数を引数として渡すことで、Web サーバーを設定することもできます。 たとえば、Web サーバーの仮想マシン名が VM1 の場合、配置スクリプトに引数として $(ComputerName_VM1) を渡すと、仮想マシンの完全修飾ドメインになります。