2019年8月8日木曜日

CIツールとの連携② - MSBuildによるビルドその3

続いてはMSBuildにて新規にナレッジベースを作成します。

プロジェクトファイルは以下になります。




CreateKnowledgeBaseタスクに必要なパラメータはGeneXus IDE上で指定するものとほぼ同じです。実行時にパラメータとして指定可能なようにプロパティとして定義しておきます。





新規にナレッジを作成した場合、データストアプロパティのServer nameとDatabase nameは必須の情報です。こちらに関しては、SetDatastorePropertyタスクで設定します。

他にも

  • SetKnowledgeBaseProperty
  • SetVersionProperty
  • SetEnvironmentProperty
  • SetGeneratorProperty

など設定ウインドウで指定するプロパティには設定用のタスクが用意されています。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <Import Project="C:\Program Files (x86)\GeneXus\GeneXus16JP\Genexus.Tasks.targets" />

   <PropertyGroup> <!--Input Parameters-->
   <!-- Working KB Properties -->
      <KBName>GX16U2JP_Demo</KBName>
      <KBDir>C:\Models\$(KBName)</KBDir>
      <DbaseServerInstance>localhost</DbaseServerInstance>
      <CreateDbInKbFolder>true</CreateDbInKbFolder>
      <DbaseUseIntegratedSecurity>true</DbaseUseIntegratedSecurity>
      <DbaseServerUsername></DbaseServerUsername>
      <DbaseServerPassword></DbaseServerPassword>
      <DbaseName>GX_KB_$(KBName)</DbaseName>
      <Language>Japanese</Language>
      <Template>CSharp.KBTemplate</Template>

      <!-- DataStore Properties -->
      <Datastore>Default</Datastore>
      <Datastore_Property_DBName>$(KBName)</Datastore_Property_DBName>
      <Datastore_Property_ServerName>(local)</Datastore_Property_ServerName>
   </PropertyGroup>


   <Target Name="CreateKB">
      <Error Condition="'$(KBDir)'==''" Text="KBDir cannot be null" />
      <Message Text="CreateKBfromServer Directory=$(KBDir)" />
      <CreateKnowledgeBase
         Directory="$(KBDir)"
         Template="$(Template)"
         IntegratedSecurity="$(DbaseUseIntegratedSecurity)"
         UserId="$(DbaseServerUsername)"
         Password="$(DbaseServerPassword)"
         CreateDbInKbFolder="$(CreateDbInKbFolder)"
         ServerInstance="$(DbaseServerInstance)"
         DBName="$(DbaseName)"
         Language="$(Language)"/>
   </Target>

   <Target Name="OpenKB">
      <Message Text="OpenKB:$(KBDir)"/>
      <OpenKnowledgeBase Directory="$(KBDir)" />
   </Target>

   <Target Name="SetDataStoreProperty">
      <SetDataStoreProperty Datastore="$(Datastore)" Name="Database name" Value="$(Datastore_Property_DBName)" />
      <SetDataStoreProperty Datastore="$(Datastore)" Name="Server name" Value="$(Datastore_Property_ServerName)" />
   </Target>

   <Target Name="BuildAll">
      <BuildAll />
   </Target>

</Project>



実行方法は以下になります。

> MSBuild.exe GeneXus.msbuild /t:CreateKB;SetDataStoreProperty;BuildAll /p:KBName=TestGX16U2_01
ターゲットの指定により、ナレッジベースを作成→データストアプロパティを設定→すべてをビルドが実行されます。

又、このケースではプロパティの指定によりジェネレータはC#、言語は日本語でナレッジベースが作成されます。


以下の場合はパラメータで指定したプロパティ値により、ジェネレーターはJava、言語は英語でナレッジベースが作成されます。
> MSBuild.exe GeneXus.msbuild /t:CreateKB;SetDataStoreProperty;BuildAll /p:KBName=TestGX16U2_02;Template=Java.KBTemplate;Language=English

このようにプロパティをうまく使う事で汎用的なプロジェクトファイルが出来上がります。







0 件のコメント:

コメントを投稿