2019年8月14日水曜日

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

前回の続きで新規に作成したナレッジベースに他のナレッジベース(xpz)をインポートしてビルドしてみます。



ImprtタスクもGeneXus IDEでのオプション指定と同様にパラメータ指定が可能です。こちらも動的に変更できるようにプロパティとして定義しています。




<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>

    <!-- Import Properties -->
    <ImportFileName>C:\usr\work\BillingSystem.xpz</ImportFileName>
    <AutomaticBackup>true</AutomaticBackup>
    <ImportType>AllObjects</ImportType>
    <LanguageTranslations>Update</LanguageTranslations>
  </PropertyGroup>

  <Target Name="CreateKB">
    <Error Condition="'$(KBDir)'==''" Text="KBDir cannot be null" />
    <Message Text="CreateKB 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>

  <Target Name="Import">
    <Message Text="Import file:$(ImportFileName)"/>
    <Import
      File="$(ImportFileName)"
      AutomaticBackup="$(AutomaticBackup)"
      ImportType="$(ImportType)"
      LanguageTranslations="$(LanguageTranslations)" />
  </Target>

</Project>

ここまで自動化出来てくると、「開発用ナレッジからエクスポート→検証用ナレッジを新規作成→インポート→ビルド」といった繰り返し、且つ、人手が掛かる作業もミス無く省力化する事が出来るようになります。


>MSBuild.exe GeneXus.msbuild /t:CreateKB;SetDatabaseProperty;Import;BuildAll /p:KBName=TestGX16U2

0 件のコメント:

コメントを投稿