最近のアクセス:
アプリケーションをデプロイする MSBuild タスク

[ アプリケーションをデプロイ ] は MSBuild タスクを基盤としており、これを使用することでデプロイを簡単に拡張およびカスタマイズできます。これらのタスクを使用してデプロイを自動化することができます。
このページには、タスクのリスト、タスクを使用して GeneXus の機能を拡張する方法、タスクを使用してデプロイを自動化する方法を記載しています。

CreateDeployProject

CreateDeployProject タスクは、選択した各オブジェクト (選択しない場合は各メインオブジェクト) のコールツリーに基づいて、デプロイメントに含める必要がある GeneXus オブジェクトを分析します。このタスクの出力は拡張子 .gxdproj の MSBuild スクリプトです。この出力には、正常なデプロイメントに必要なすべての環境プロパティとオブジェクト (とそのプロパティ) が保持されます。
GeneXus は Deploy.msbuild (GeneXus インストールのルートにある) というスクリプトを提供しています。これは GeneXus 自体が使用するもので、これを出発点として呼び出しを自動化することができます。ナレッジベースで各メインオブジェクトのデプロイメントプロジェクトを作成するには、次のコマンドを使用します。
msbuild.exe <GX のインストールディレクトリー>\deploy.msbuild /p:KBPath=<ナレッジベースのパス>
これにより、前述のナレッジベースのバージョンのすべてのメインオブジェクトについて、トランクバージョンのデプロイ プロジェクト ファイル (.gxdproj) が作成されます。この動作は、いくつかのプロパティを追加することで変更できます。
KBVersion: アクティブとして指定するバージョン名です。
KBEnvironment: そのバージョンの環境名です。
ProjectName: 生成される .gxdproj ファイルの名前です。このパラメーターを空にすると、DeploymentUnit パラメーターの値が gxdproj の名前になります (タイムスタンプの値が連結されます)。ProjectName と DeploymentUnit がどちらも空の場合は、「MSBuildDeployment」にタイムスタンプが連結された値が gxdproj の名前になります。
ObjectNames: デプロイするオブジェクトの名前とそのタイプ (デプロイメントユニットは選択可能) です(「MSBuild タスクでオブジェクトリストを指定する方法」を参照してください)。このパラメーターを空にすると、ナレッジベースのすべてのメインオブジェクトがデプロイメントに含まれます。
APPLICATION_KEY: デプロイするアプリケーションに設定する新しい暗号キーです。
ApplicationServer
TARGET_JRE: (Java のみ) デプロイしたアプリを実行する Java ランタイムのバージョンです(既定値は 9)。
PACKAGE_FORMAT: (Java のみ) エンジンで WAR と EAR のどちらを作成するかを指定します(既定値は「Automatic」、選択されたオブジェクトに基づいてエンジンが決定します)。
SelectedObjectsOnly: True に設定すると、デプロイエンジンは選択したオブジェクトのコールツリーを計算せずに、選択したもののみデプロイします。
TargetId: 既定値は「Local」ですが、サポートされる任意のアプリケーションのデプロイターゲットを設定できます。
SourcePath: 既定値はナレッジベースの directory\model です。Outputpath が定義されていない場合、gxdproj ファイルは <SourcePath>\web の下に保存されます。
Outputpath: Gxdproj の保存場所です。
[ CallTreeLogFile ] プロパティを使用してオブジェクトのコールツリーのログを取得することもできます。

MSbuild.exe /nologo /verbosity:minimal /ToolsVersion:14.0 "c:\GeneXus\deploy.msbuild" 
/p:KBPath="c:\fullgx\kbaux" 
/p:KBEnvironment=NetEnvironment 
/p:KBVersion=kbaux 
/p:ProjectName=DeployNet16 
/p:ObjectNames="TestDeployUnit1" 
/p:GX_PROGRAM_DIR="c:\fullgx\gxsaltostable" 
/p:TimeStamp=DeployNet16 
/p:Application_Key=863B7BE7A26B4276942E2C50FA1E0EAC 
/p:ApplicationServer="IIS8" /p:TargetId="Local" 
/p:SourcePath="c:\fullgx\kbaux\CSharpModel" 
/p:AppName="DeployNet16" 
/p:SelectedObjectsOnly="false" 
/l:FileLogger,Microsoft.Build.Engine;logfile=c:\fullgx\temp\CreateDeploy.log
/p:CallTreeLogFile=c:\temp\CallTree.log
/t:CreateDeploy 
生成された .gxdproj ファイルはもうひとつの MSBuild スクリプトで、このファイルにはアプリケーションパッケージを作成するために必要な情報が含まれています。

CreatePackage

パッケージ (C# および .NET Core の場合は zip ファイル、Java の場合は war、jar、ear) を生成するには、生成されたスクリプトを以下のコマンドで実行します:
msbuild.exe <フルパス>\MSBuildDeployment_20190123103151.gxdproj
この場合は、生成したパッケージのデプロイ先をエンジンに伝えるためのプロパティを設定することもできます。
DeployFullPath: パッケージ化されたファイルのコピー先をフルパスで指定します。複数のデプロイメントを比較するためにこのパスを使用できます。
生成された .gxdproj ファイルで、 [ DeployFullPath ] プロパティと [ DeployFileFullPath ] プロパティの既定値を確認してください。
    <!-- デプロイ先のパス -->
    <PropertyGroup>
        <DeployFileFullPath>$(SourcePath)\Deploy\$(DeployTarget)</DeployFileFullPath>
        <DeployFullPath>$(DeployFileFullPath)\$(DeploymentUnit)\$(TimeStamp)</DeployFullPath>
    </PropertyGroup>

外部ターゲットへのデプロイ

GeneXus では、サポート対象のクラウドプロバイダー (デプロイターゲット) にデプロイすることもできます。
GeneXus インストールフォルダの下の DeploymentTargets フォルダに、サポートされるターゲットがすべて挙げられています。すべてのターゲットには deploy.msbuild ファイルがあり、そのファイルには Deploy という名前の既定のタスクがあります。

MSBuild.exe /nologo /verbosity:minimal /ToolsVersion:4.0 "c:\GeneXus\DeploymentTargets\Docker\deploy.msbuild" 
/p:DOCKER_BASE_IMAGE="tomcat:9-jdk11" 
/p:DOCKER_MAINTAINER="seba <seba@example.com>" 
/p:DOCKER_WEBAPPLOCATION="/usr/local/tomcat/webapps/" 
/p:DOCKER_IMAGE_NAME="k8sdeployjavaenvironment" 
/p:DOCKER_ENVVARS=""
/p:GENERATOR="Java" 
/p:APPLICATION_NAME="DeploymentUnit2_20200130131103" 
/p:DEPLOY_PATH="C:\GXmodels\junk\K8SDeploy\JavaModel\Deploy\DOCKER\DeploymentUnit2\20200130131103" 
/t:Deploy

まとめると、ターゲットがローカルではない場合、実行は次の順序で行われます。
ここでは例として AWSECS を使用します。
1. GeneXus のルートにある deploy.msbuild スクリプトの CreateDeploy タスクが MSBuild によって実行されます。ターゲット IDデプロイターゲットはプロパティとして渡します。次に例を示します:
MSbuild.exe /nologo /verbosity:minimal /ToolsVersion:14.0 "c:\GeneXus\deploy.msbuild"
/p:KBPath="c:\fullgx\kbaux"
/p:KBEnvironment=NetEnvironment
/p:KBVersion=kbaux
/p:ProjectName=DeployNet16
/p:TargetId="AWSECS" 
/p:DEPLOY_TARGETS="C:\Genexus\DeploymentTargets\AWSECS\aws.targets"
/p:SourcePath="c:\fullgx\kbaux\CSharpModel"
/p:AppName="DeployNet16" /t:CreateDeploy
これにより gxdproj ファイルが生成され、DeployTarget (TargetId 情報) DeployTargetTask (DEPLOY_TARGETS 情報) の各プロパティを確認できます。
2. 生成された gxdproj スクリプトの CreatePackage タスクが MSBuild によって実行されます。これによりローカルマシンにパッケージが作成されます。
3. deploy.msbuild (<GX>\DeploymentTargets\AWSECS 下) の Deploy タスクが実行され、PaaS がデプロイされます。

ヒント

GeneXus IDE の [ アプリケーションをデプロイ ] からデプロイを行う際に GeneXus のログを生成して、実行される MSBuild タスクをログで確認できるようにします。

参考情報

MSBuild タスク
チーム開発の MSBuild タスク
アプリケーションをデプロイ
MSBuild タスクでオブジェクトリストを指定する方法




サブページ
Created: 20/01/09 23:26 by Admin Last update: 23/05/24 03:21 by Admin
カテゴリ
Powered by GXwiki 3.0